Excel vba note 4 keynote

50 %
50 %
Information about Excel vba note 4 keynote
Technology

Published on February 28, 2014

Author: hika1990

Source: slideshare.net

Description

教授vba 課程的第4課 :)

EXCEL ADVANCE & VBA Course 4 2014-02-12 !1

Course Material http://macaucivil.com/vba4.zip –Here

陣列 陣列其實也是變數,⼀一個可以集合多個同類型的變數集合! ! 以上 5 盒維他奶就是 5 個變數,因為5個都是維他奶可看成是同⼀一個變數,⽽而他們同在⼀一個“陣列 “上,這裡我⽤用“維他奶“作為名稱,“維他奶“就是陣列名,⽽而這裡有五個變數在這個陣列上。 ! ! 若想取出⼀一排維他奶中的第⼆二盒維他奶可以這些表⽰示:! ! ! ! 維他奶 (2) ! ! ! 陣列可以很⽅方便把同類變數作歸類,如可定義⼀一陣列變數然后把全部學⽣生名字都放進去。! 也可以利⽤用索引號去找出內裡的變數。!

那麼在vb 中⼜又是如何定義陣列以及放置變數呢? Public | Dim 陣列名稱 (a to b ) As 資料類型 or Public | Dim 陣列名稱 (n) As 資料類型 Dim 維他奶 ( 1 to 5 ) As String 維他奶 (1) = " 維他⼀一號" 維他奶 (2) = " 維他⼆二號” 維他奶 (3) = " 維他三號” 維他奶 (4) = " 維他四號” 維他奶 (5) = " 維他五號" 給陣列第⼀一個元素賦值,因該陣列是字串, 可以給字串值 " 維他⼀一號" or!

陣列也可以是多維的,如⼀一貨架有三層,分別放上了⼀一排維他奶,每⼀一排各五盒,那麼會是這様:! 第三層 第⼆二層 第⼀一層 如若客上要第⼆二層第四盒維他奶的話,在vb應該是這様表⽰示 維他奶 (2,4) 其實只要有需要,陣列可以發展成三維,四維以及五維或以上都可以! Example Dim 維他奶 ( 1to 3, 1 to 5 ) As String 維他奶 (1,1) = " 第⼀一層維他⼀一號" 維他奶 (1,2) = " 第⼀一層維他⼆二號” 維他奶 (1,3) = " 第⼀一層維他三號” 維他奶 (1,4) = " 第⼀一層維他四號” 維他奶 (1,5) = " 第⼀一層維他五號"

動態陣列! ! 如若無法確定陣列將會有多少個同類元素,可以以在⾸首次定義時將括號內的數字留空,之 后再重定義陣列的⼤大⼩小。以下為⼀一實際例⼦子: 定義陣列 Sub dtsz() 計算A列中有多少個⾮非空集合 Dim arr() As string Dim n as Long n = Application.WorkSheetFunction.CountA(Range(“A:A”) ReDim arr(1 to n) As String End Sub 重新定義陣列的⼤大⼩小 (定義時參數不能是變數,但重定義是可以)

多種創建陣列的⽅方式 使⽤用Array function 使⽤用此⽅方式必須是Variant Dim arr As Variant arr = Array (1,2,3,4,5) Debug.print “陣列中第⼆二個元素為:”& arr (1) ⽤用逗號作區隔 1. 使⽤用Split function 使⽤用Split function 使⽤用此⽅方式必須是Variant Dim arr As Variant arr = Split (“李⼩小明,李⼤大明”, “,”) Debug.print “陣列中第⼆二個元素為:”& arr (1) Dim arr As Variant arr = Split (“李⼩小明 |李⼤大明”, “|”) Debug.print “陣列中第⼆二個元素為:”& arr (1) 設定以逗號作區隔,第⼀一個 參數必須是字串,第⼆二個參數為 設以何種⽅方式區隔,這裡區分出 來都是字串 以| 作區隔

利⽤用 Range 物件 讀取 或寫⼊入⾄至陣列 使⽤用此⽅方式必須是Variant Dim arr As Variant arr = Range(“A1:C3”) Range(“E1:G3”).Value = arr 讀取該區域之值 賦值

其他常⽤用function UBound(arr) LBound(arr) 注意:如若没有設定索引,則最⼩小會為 0 開始 UBound(arr) 可以得出該陣列之最⼤大索引數 LBound(arr) 可以得出該陣列之最⼩小索引數 以上兩個function 皆可以加⼊入第⼆二參數以得出相對應的維數下的索引數: UBound(arr,1) 可以得出該陣列第⼀一維之最⼤大索引數 UBound(arr,2) 可以得出該陣列第⼆二維之最⼤大索引數 LBound(arr,1) 可以得出該陣列第⼀一維之最⼩小索引數 LBound(arr,2) 可以得出該陣列第⼆二維之最⼩小索引數 計算確實陣列中的元素個數為 UBound(arr) - LBound(arr) + 1 Join(arr,arg) Dim arr As Variant arr = Array (1,2,3,4,5) text = Join(arr, “@”) Debug.print text 后⽅方的參數表⽰示⽤用什麼字串把他們連結起來, 你可以直接””也可以 1@2@3@4@5

關於Range to Array 如若你想⾃自以下的儲存格區域中取出值并放在Array 時! 必須注意你的陣列是 2 維的 如若想取A1值的話 以下⽅方式取值是會出錯的 Sub copy_test2() Dim number_test As Variant number_test = Range("A1:B7").Value Debug.Print number_test(1) End Sub 現在是兩維 應該是number_test(1,1) 若只是取Range(“A1:A7”) 也需要指定維數
 即若要取A1 值應是number_test(1,1)

練習時間 1.試取出 sample1.xlsm 中的A1:A7 至⼀一陣列并貼上至B1:B7 2.試以 for 或 do 迴圈將取至陣列A1:A7 的值都加上 10 ,并貼上至B1:B7 Hint Sub ex2() Dim number_test As Variant, n As Long number_test = Range("A1:A7").Value For i = 1 To ____________ __________ = __________ + 10 Next ____________ = number_test End Sub 3.取出現時A1:B8的值至⼀一陣列,并計⽤用該陣列的總和,最後輸出至B8
 (hint: 可利⽤用 WorksheetFunction.Sum(array) 直接計算 4.將sample1.xlsm ⼯工作表2 中的A1 字串⽤用“,”分解,并輸出A1:A9

物件 物件可想像為 “可⽤用程式碼操作的東西” 以下這些都可以想像成是現實中的物件 我的家-》我的房間-》我的桌⼦子-》電腦旁的鉛筆 在Excel 則是 Excel程式-》活⾴頁簿-》⼯工作表-》A1 儲存格

活⾴頁簿 A1 儲存格 ⼯工作表

我的家-》我的房間-》我的桌⼦子-》電腦旁的鉛筆 如果⽤用⼀一般的⽂文字,告訴別⼈人鉛筆的位置應該是這様 在我家中,我的房間的桌⼦子上的電腦旁有⼀一⽀支鉛筆 癈話太多︖? ⽀支鉛筆係我間房電腦⼽戈度 “描述詳細有時候對別⼈人也是⼀一種負擔” 在Excel vba中 也是類似的想法,只是⽤用的語法不⼀一様

Excel程式-》活⾴頁簿-》⼯工作表-》A1 儲存格 如根據以上我們可以很精準告訴vb 我們要從那裡到那裡
 以及最後到那個位置 Application.Workbooks(“Book1”).Worksheets(“Sheet1”).Range(“A1”) Excel程式 活⾴頁簿 ⼯工作表 物件的層次可以⽤用 . 來連接 但癈話太多,可以再精簡點 Worksheets(“Sheet1”).Range(“A1”) or Range(“A1”) 儲存格A1

物件屬性 物件都有屬性,可以是該物件包含的內容或具有的特點。︒ 電腦(物件)-》顏⾊色(屬性) 我的電腦的顏⾊色-》我.電腦.顏⾊色 A1 儲存格中的⽂文字(物件)-》⽂文字顏⾊色(屬性) Range(“A1”).Font.Color

物件的相對性 Worksheets(“Sheet1”).Range(“A1”).Font.Color Range(“A1”) 相對於Worksheets(“Sheet1”)是屬性,相對於Font是物件

物件的⽅方法 物件⽅方法是在該物件上運⾏行的某種操作,可以理解成⽂文字中的“動詞“ 剪下 儲存活⾴頁簿 加入注解 新增⽂文件 取消注解 刪除⽂文件 選取 改名字 貼上

那我怎知道那是⽅方法那是屬性︖? 使⽤用 F1 說明 或 ⾃自動提⽰示功能 在物件后 . ⽅方可列出 屬性 ⽅方法 必須先確定設定⾃自動列出成員

⾃自訂 Function 相信⼤大家⼀一定有⽤用過Excel 本身提供的Function 其實我們也能弄⼀一個⽤用 主要⽤用來補充原Excel 無法提供的Function功能

來簡單寫⼀一個 function 只能寫在模組內,否則無法調⽤用 以下是⼀一個例⼦子 Public Function myfunction() myfunction = round(rand()*100,1) End Function 程式結束前必須把結果賦給function 的名字! 否則會出錯或無結果 可以⽤用插入⽅方式選取 因為 function 是⼀一種有結果輸的程式 或是直接打入⾃自訂function 的名字

⾃自訂function 當然也能加入參數 宣告可能出現的參數類別 ! Public Function myfunction(name As String) If name Like "D*" Then myfunction = "Yes, The first letter is D" Else myfunction = "NO" End If End Function 也可以是多個參數 ! Public Function myfunction(name As String, rng As Range) If rng Like name Then myfunction = "Yes, The first letter is D" Else myfunction = "NO" End If End Function *如若想增加function 的說明需要⽤用到Register function,有時間再討論

練習時間 1. ⾃自訂⼀一個function 可以計算平和
 並利⽤用該function 計算 sample1.xlsm ⼯工作表3 A1 2. 按照原excel 的if function,寫出⼀一具同様功能的function 3.設計⼀一function 使能判斷 該字串是否為 D 開頭 *Advanced.設計⼀一個function 將⼯工作表四中的 A1 至 A3 改寫⾃自以下⽅方式
 (Hint : 可以利⽤用if 作判斷 ,mid(Text,Start_num,Num_chars),和 Instr(start,string,compare) )

“優化你的代碼” -Tutor

“下堂課才是玩真的.” –Tutor

Add a comment

Related presentations

Related pages

Excel, Vba | LinkedIn

View 706 Excel, Vba posts, presentations, experts, and more. Get the professional knowledge you need on LinkedIn.
Read more

Excel (vba) | LinkedIn

Consultor de Excel / Vba at Doutores do Excel Past Técnico de Planejamento Pleno at Toyo Setal Engenharia, Assistente de Planejamento at Galvão ...
Read more

Fabulous Examples of Excel Functions: The MODE Function

Fabulous Examples of Excel Functions: ... Note: Excel ignores text, ... 4, 4, 8, 8, 13. Now we ask Excel to find all of the modes using the following MODE ...
Read more

Working with Excel 4.0 macros - Excel

Working with Excel 4.0 macros. Although Microsoft Excel 2010 still supports Excel 4.0 (XLM) macros, we encourage you to migrate them to the latest version ...
Read more

Excel VBA Course Notes: 2 - Martin Green's Office Tips

Excel VBA Course Notes: 2. ... Exercise 4: Including an IF ... VBA does support many of the commoner Excel functions with its WorksheetFunction method.
Read more

Fabulous Examples of Excel Functions: The SQRT Function

Fabulous Examples of Excel Functions: ... number is the number for which you want Excel to calculate the square root. Note: ... So Excel displays 4.99 ...
Read more

How to Send Email Reminder Automatically From Excel ...

How to Send Email Reminder Automatically. ... Reminder Automatically From Excel Worksheet Using VBA _ Excel ... note 4 keynote 教授vba ...
Read more

Import and Export VBA code - Excel Automation - Ron de Bruin

Import and Export VBA ... You can use it to import modules/userforms to other Excel files or to update the code in other Excel files. Note: ... 4: Note: If ...
Read more