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