數(shù)組是有序數(shù)據(jù)的集合。數(shù)組中的元素可以不屬于同一個(gè)數(shù)據(jù)類(lèi)型。用一個(gè)統(tǒng)一的數(shù)組名和下標(biāo)來(lái)唯一地確定數(shù)組中的元素,更改其中一個(gè)元素并不會(huì)影響其它元素。數(shù)組的下標(biāo)是有界的,分為下界和上界。數(shù)組可以用Dim、Private、Public或Static來(lái)聲明,它們的語(yǔ)法格式相同。下面只介紹用Dim聲明數(shù)組的方法。
1.?dāng)?shù)組的定義與聲明
數(shù)組的定義語(yǔ)法如下:
Dim 數(shù)組名( [[下標(biāo)下界 To ] 下標(biāo)上界] ) [As 數(shù)據(jù)類(lèi)型]
例如(假設(shè)在當(dāng)前模塊中 數(shù)組的缺省下界為0)):
① Dim A(10) As Integer
表示數(shù)組名為A,此數(shù)組下標(biāo)下界為缺省值0,下標(biāo)上界為10,有11個(gè)Integer類(lèi)型的元素,從A(0)、A(1)到A(10)。
② Dim B(1 To 20) As Integer
表示數(shù)組名為B,此數(shù)組下標(biāo)下界為1,下標(biāo)上界為20,有20個(gè)Integer類(lèi)型的元素,從B(1)到B(20)。
③Dim DayArray(50)
表示DayArray 是一個(gè)有 51 個(gè)索引(從 0 到 50)元素的 Variant 數(shù)組。
④Dim Matrix(3, 4) As Integer
表示Matrix 是一個(gè)二維 Integer 數(shù)組。
⑤Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double
表示MyMatrix 是一個(gè)顯式指定了上下界的三維 double 數(shù)組。
⑥D(zhuǎn)im BirthDay(1 To 10) As Date
表示BirthDay 是一個(gè)索引從 1 到 10 的 Date型 數(shù)組。
2.Option Base 語(yǔ)句
Option Base 語(yǔ)句在模塊級(jí)別中使用,用來(lái)聲明數(shù)組下標(biāo)的缺省下界。
Option Base 語(yǔ)句的語(yǔ)法如下:
Option Base {0 | 1}
說(shuō)明:缺省狀態(tài)下數(shù)組下界為 0,此時(shí)無(wú)需使用 Option Base 語(yǔ)句。如果使用該語(yǔ)句規(guī)定數(shù)組下界1,則必須在模塊的數(shù)組聲明之前使用Option Base 語(yǔ)句。
注意:
(1)Dim、Private、Public、ReDim 以及 Static 語(yǔ)句中的 To 子句提供了一種更靈活的方式來(lái)控制數(shù)組的下標(biāo)。不過(guò),如果沒(méi)有使用 To 子句顯式地指定下界,則可以使用 Option Base 將缺省下界設(shè)為 1。使用 Array 函數(shù)創(chuàng)建的數(shù)組的下界也受 Option Base 語(yǔ)句指定的下界的決定, 除非 Array 是由類(lèi)型庫(kù)(例如 VBA.Array )名稱(chēng)限定,如果是由類(lèi)型庫(kù)名稱(chēng)限定,則 使用Array 函數(shù)創(chuàng)建的數(shù)組的下界不受 Option Base 的影響。
(2) Option Base 語(yǔ)句只影響位于包含該語(yǔ)句的模塊中的數(shù)組下界。
關(guān)于數(shù)組聲明的幾點(diǎn)說(shuō)明:
①數(shù)組名命名規(guī)則和變量名的相同。
②數(shù)組名后是用圓括弧括起來(lái)的,不能用方括弧,不同于C語(yǔ)言。
③下標(biāo)的下界必須不能大于其上界。
④可以用變量名或常數(shù)名(以及實(shí)數(shù))作下標(biāo)的邊界。當(dāng)下標(biāo)的邊界是常數(shù)名時(shí),數(shù)組的大小固定,當(dāng)下標(biāo)的邊界是變量名時(shí),數(shù)組的大小可作動(dòng)態(tài)定義,即數(shù)組的大小取決于程序運(yùn)行過(guò)程中變量的值。因此,VB 中數(shù)組又可以分為兩種數(shù)組:靜態(tài)數(shù)組、動(dòng)態(tài)數(shù)組。
3.靜態(tài)數(shù)組
靜態(tài)數(shù)組是指數(shù)組元素的個(gè)數(shù)是固定不變的,即它們占用的內(nèi)存空間大小是固定不變的。根據(jù)固定大小數(shù)組的維數(shù)不同,可以將它分為一維數(shù)組和多維數(shù)組。
聲明多維數(shù)組的語(yǔ)法格式為:
Dim 數(shù)組名([下標(biāo)邊界列表]) [As 數(shù)據(jù)類(lèi)型]
下標(biāo)邊界的定義形式:[下標(biāo)下界 To]下標(biāo)上界
下標(biāo)邊界列表指用逗號(hào)分開(kāi)的數(shù)組各維的下標(biāo)邊界,即
[下標(biāo)下界 To]下標(biāo)上界,[下標(biāo)下界 To]下標(biāo)上界,……,[下標(biāo)下界 To]下標(biāo)上界
(第一維) (第二維) (第n維)
當(dāng)n=1時(shí),數(shù)組稱(chēng)作一維數(shù)組;當(dāng)n=2時(shí),數(shù)組稱(chēng)作二維數(shù)組;依次類(lèi)推,當(dāng)n=m時(shí),數(shù)組稱(chēng)作m維數(shù)組。
下面舉例介紹一維數(shù)組的使用。
'聲明一個(gè)長(zhǎng)度為51的字符串?dāng)?shù)組FriendsName
Dim FriendsName(50) As String
'聲明一個(gè)長(zhǎng)度為11的全局整型數(shù)組Class
Public Class(10) As Integer
一維數(shù)組中的元素個(gè)數(shù)為(上界-下界+1)。
為數(shù)組賦初值可以采用循環(huán)語(yǔ)句,如:
Dim I As Integer
For I = 0 To 11 '循環(huán)語(yǔ)句的使用程序流程的控制
C(I) = I
Next I
如果不顯式指定下標(biāo)下界,則數(shù)組的下標(biāo)下界由 Option Base 語(yǔ)句控制。如果沒(méi)有 Option Base 語(yǔ)句則下界為默認(rèn)為 0。
數(shù)組的維數(shù)并不限于2,在VB中,可以擴(kuò)大至于60,在實(shí)際應(yīng)用上對(duì)三維以上的數(shù)組的應(yīng)用是不多的。定義一個(gè)多維數(shù)組時(shí)只需一條Dim語(yǔ)句指定數(shù)組的所有下標(biāo)邊界即可,使用多維數(shù)組的可以很方便的表示一些有意義的統(tǒng)計(jì)數(shù)據(jù)。例如:
Dim Profit(16,10,12) As Currency
這個(gè)Profit數(shù)組可用來(lái)表示以店名、部門(mén)及月份為參數(shù)的某百貨公司的利潤(rùn)。如:Profit(2,8,11)代表了第二分店的第八部門(mén)在11月份的利潤(rùn)。
4.動(dòng)態(tài)數(shù)組
有時(shí)在數(shù)組開(kāi)始使用前,不能知道需要多大的數(shù)組才能滿足實(shí)際需要。當(dāng)然可以把數(shù)組的大小定義到足夠大來(lái)滿足任意的實(shí)際應(yīng)用需要,這種方法效率很低(大量浪費(fèi)內(nèi)存空間)。如果使用動(dòng)態(tài)數(shù)組,就可以在程序運(yùn)行時(shí)根據(jù)實(shí)際需要,精確定義數(shù)組的大小。
在聲明數(shù)組時(shí),不給出維數(shù)列表就是將數(shù)組聲明為動(dòng)態(tài)數(shù)組。例如:
Dim MyArry() As Integer
在使用動(dòng)態(tài)數(shù)組前,必須使用ReDim語(yǔ)句把它重新定義。如前面聲明的數(shù)組MyArry,可以用以下語(yǔ)句將它定義為一個(gè)動(dòng)態(tài)二維數(shù)組。
ReDim MyArry(10,10)
還可以通過(guò)重復(fù)執(zhí)行ReDim語(yǔ)句,多次定義動(dòng)態(tài)數(shù)組。使用ReDim最多能定義數(shù)組的維數(shù)是60。ReDim語(yǔ)句可以改變數(shù)組每維的元素個(gè)數(shù),但不能改變維數(shù)。下面是對(duì)ReDim語(yǔ)句的一個(gè)標(biāo)準(zhǔn)應(yīng)用舉例。
Dim MyArry() As Single ‘聲明動(dòng)態(tài)數(shù)組
ReDim MyArry(30,20,10) ‘重新定義數(shù)組
ReDim MyArry(50,23,21) ‘再次重新定義數(shù)組
ReDim的語(yǔ)法與Dim的相同,此外,它還有選擇項(xiàng)Preserve關(guān)鍵詞:
ReDim Preserve 數(shù)組名 ([ [下標(biāo)下界 To]下標(biāo)上界]) [As 數(shù)據(jù)類(lèi)型]
例如:
- ReDim MyArry(50,23,21)
- ReDim Preserve MyArry(50,23,50)
新聞熱點(diǎn)
疑難解答
圖片精選