什么是vba數(shù)組?先讓我們從字面來看一下它的意思:“數(shù):數(shù)據(jù);組:組合”。從字面很直觀地看出,數(shù)組就是N個數(shù)據(jù)的組合,如果某個變量只包含一個數(shù)據(jù),就不是數(shù)組,只能是一個普通的變量。
有人把數(shù)組比喻為一串用線穿起來的辣椒,也有人比喻為班級里一群學(xué)生。
如果你當(dāng)過兵,每天訓(xùn)練前肯定會先做隊伍集合,如果這個隊伍是一個班,班長肯定會叫全體士兵先排隊點名,每個士兵會從頭至尾進(jìn)行報數(shù),1、2、3。。。這樣最后一名士兵所報的數(shù)就是當(dāng)前這個班的總?cè)藬?shù)(假設(shè)這個班共有10名士兵),班長從報數(shù)中一聽就知道10名士兵是否全部到齊。在這里,這個班每個士兵不同的姓名就組成了一個數(shù)組,由“張三、李四、王五、趙六”等許多姓名構(gòu)成。這些姓名也可以看成是單個變量,比如變量a=“張三”;b=“李四”....,而數(shù)組就是由眾多單變量組合而來。
數(shù)組概念再理解:
數(shù)組是一組具有相同類型和名稱的變量的集合。這些變量稱為數(shù)組的元素,每個數(shù)組元素都有一個編號,這個編號叫做下標(biāo),我們可以通過下標(biāo)來區(qū)別這些元素。數(shù)組元素的個數(shù)有時也稱之為數(shù)組的長度。
一般情況下,數(shù)組的元素類型必須相同,可以是前面講過的各種基本數(shù)據(jù)類型。但當(dāng)數(shù)組類型被指定為變體型時,它的各個元素就可以是不同的類型。
數(shù)組和變量一樣,也是有作用域的,按作用域的不同可以把數(shù)組分為:過程級數(shù)組(或稱為局部數(shù)組)、模塊級數(shù)組以及全局?jǐn)?shù)組。
連續(xù)可索引的具有相同內(nèi)在數(shù)據(jù)類型的元素所成的集合,數(shù)組中的每一元素具有唯一索引號。更改其中一個元素并不會影響其它元素。
'第一個數(shù)組實例:用數(shù)組來表示10名士兵,并判斷變量aa是否數(shù)組:
Private Sub CommandButton1_Click()
Dim aa As Variant
'定義變量aa為變體形式
'給變量aa賦值,其中array函數(shù)后面跟了10個參數(shù),字符串必需用雙引號括起來;各個字符串之間用逗號隔開
aa = Array(”士兵1”, “士兵2”, “士兵3”, “士兵4”, “士兵5”,, “士兵6”, “士兵7”, “士兵8”, “士兵9”, “士兵10”)
'下面這句判斷變量aa是不是數(shù)組,用isarray函數(shù),括號中的參數(shù)是變量aa
If IsArray(aa) Then MsgBox “變量aa是一個數(shù)組”
'如果IF條件為真true,就會彈出消息框,如果為假false,退出程序
End Sub
**********************************************************************************
'第二個數(shù)組實例:用數(shù)組來表示10名士兵,并從數(shù)組中取出元素值:
Private Sub CommandButton1_Click()
aa = Array(”士兵1”, “士兵2”, “士兵3”, “士兵4”, “士兵5”,, “士兵6”, “士兵7”, “士兵8”, “士兵9”, “士兵10”)
MsgBox “數(shù)組aa中第一個元素是:” & Space(5) & aa(0) '從數(shù)組aa中取出第一個元素:
End Sub
'*******************************************************************************
'上面代碼第二句中的 aa(0)是什么意思呢?
'aa 就是數(shù)組名,你可以更改它的名字,甚至可以用你的姓名來替代
'括號中的 0 是什么呢?
'數(shù)組下標(biāo)包括下界、上界
'除非你特別指定,比如在程序開頭第一行添加了Option base 1(注意不是位于某個過程的開頭,而是當(dāng)前VBE界面代碼窗口的第一行)
'或者是定義時采用aa(1 to 10)這種形式,否則默認(rèn)下界從0開始
'*******************************************************************************
數(shù)組表示方法:
'用來表示數(shù)組元素的符號由變量名、圓括號以及括號中的所需元素的索引號組成。在下面的示例中,
'第一條語句創(chuàng)建一個 Variant 的變量 xx。第二條語句將一個數(shù)組賦給變量 xx。共有3個元素:100,200,300
'第三條語句將該數(shù)組的第二個元素的值賦給另一個變量。第四句顯示數(shù)組中的第2個元素,即200
Sub aaa()
Dim xx As Variant
xx = Array(100, 200, 300)
b = xx(1)
'注意數(shù)組具有下標(biāo),用來標(biāo)記每個元素的位置號,默認(rèn)從0開始,如下標(biāo)為0,是第1個元素,1就是第二個元素
MsgBox b
End Sub
'使用 Array 函數(shù)創(chuàng)建的數(shù)組的下界受 Option Base 語句指定的下界的決定,除非 Array 是由類型庫(例如 VBA.Array )名稱限定。
'如果是由類型庫名稱限定,則 Array 不受 Option Base 的影響。
'注意沒有作為數(shù)組聲明的 Variant 也可以表示數(shù)組。除了長度固定的字符串以及用戶定義類型之外,
'Variant 變量可以表示任何類型的數(shù)組。盡管一個包含數(shù)組的 Variant 和一個元素為 Variant 類型的數(shù)組在概念上有所不同,
'但對數(shù)組元素的訪問方式是相同的。