VB怎么聲明數(shù)組?
Dim Counters (14) As Integer '15 個元素。
Dim Sums (20) As Double '21 個元素。
為建立公用數(shù)組,直接用 Public 取代 Dim。
Public Counters (14) As Integer
Public Sums (20) As Double
在過程之中同樣的聲明使用 Dim:
Dim Counters (14) As Integer
Dim Sums (20) As Double
第一個聲明建立了一個有 15 個元素的數(shù)組,其索引號從 0 到 14 。第二個聲明建立了一個有 21 個元素的數(shù)組,其索引號從 0 到 20 。缺省的下界為 0。
為了規(guī)定下界,用關(guān)鍵字 To 顯式提供下界(為 Long 數(shù)據(jù)類型):
Dim Counters (1 To 15) As Integer
Dim Sums (100 To 120) As String
包含其它數(shù)組的數(shù)組
Private Sub Command1_Click ()
Dim intX As Integer '聲明計數(shù)器變量。
'聲明并放置整數(shù)數(shù)組。
Dim countersA (5) As Integer
For intX = 0 To 4
countersA (intX) = 5
Next intX
'聲明并放置字符串?dāng)?shù)組。
Dim countersB (5) As String
For intX = 0 To 4
countersB (intX) = "hello"
Next intX
Dim arrX (2) As Variant '聲明擁有兩個成員的新數(shù)組。
arrX (1) = countersA () '將其它數(shù)組移居到數(shù)組。
arrX (2) = countersB ()
MsgBox arrX (1) (2) '顯示每一個數(shù)組的成員。
MsgBox arrX (2) (3)
End Sub
多維數(shù)組
有時需要追蹤記錄數(shù)組中的相關(guān)信息。例如,為了追蹤記錄計算機屏幕上的每一個像素,需要引用它的 X、Y 坐標(biāo)。這時應(yīng)該用多維數(shù)組存儲值。
可用 Visual Basic 聲明多維數(shù)組。例如,下面的語句聲明了一個過程內(nèi)的 10 × 10 的二維數(shù)組。
Static MatrixA (9, 9) As Double
Static MatrixA (1 To 10, 1 To 10) As Double
Dim MultiD (3, 1 To 10, 1 To 15)
這個聲明建立了三維數(shù)組,大小為 4 × 10 × 15。元素總數(shù)為三個維數(shù)的乘積,為 600。
注意 在增加數(shù)組的維數(shù)時,數(shù)組所占的存儲空間會大幅度增加,所以要慎用多維數(shù)組。使用 Variant 數(shù)組時更要格外小心,因為他們需要更大的存儲空間。
用循環(huán)操作數(shù)組
Dim I As Integer, J As Integer
Static MatrixA(1 To 10, 1 To 10) As Double
For I = 1 To 10
For J = 1 To 10
MatrixA (I, J) = I * 10 + J
Next J
Next I
要創(chuàng)建動態(tài)數(shù)組,請按照以下步驟執(zhí)行:
(如果希望數(shù)組為公用數(shù)組,則)用 Public 語句聲明數(shù)組,或者,(如果希望數(shù)組為模塊級,則)在模塊級用 Dim 語句聲明數(shù)組,或者(如果希望數(shù)組為局部數(shù)組,則)在過程中用 Static 或 Dim 語句聲明數(shù)組。給數(shù)組附以一個空維數(shù)表,這樣就將數(shù)組聲明為動態(tài)數(shù)組。
Dim DynArray ()
用 ReDim 語句分配實際的元素個數(shù)。 ReDim DynArray (X + 1)
ReDim 語句只能出現(xiàn)在過程中。與 Dim 語句、Static 語句不同,ReDim 語句是一個可執(zhí)行語句,由于這一語句,應(yīng)用程序在運行時執(zhí)行一個操作。
ReDim 語句支持這樣的語法,它與固定數(shù)組中使用的語法相同。對于每一維數(shù),每個 ReDim 語句都能改變元素數(shù)目以及上下界。但是,數(shù)組的維數(shù)不能改變。
ReDim DynArray (4 to 12)
例如,用第一次聲明在模塊級所建立的動態(tài)數(shù)組 Matrix1:
Dim Matrix1 () As Integer
Sub CalcValuesNow ()
ReDim Matrix1 (19, 29)
End Sub
ReDim 語句給 Matrix 分配一個 20 × 30 的整數(shù)矩陣(元素總大小為 600)。還有一個辦法,用變量設(shè)置動態(tài)數(shù)組的邊界:
ReDim Matrix1 (X, Y)
注意 您可以將字符串賦值給大小可變的字節(jié)數(shù)組。一個字節(jié)數(shù)組也可以被賦值給一個可變長的字符串。一定要注意字符串中的字節(jié)數(shù)會隨平臺而變化。同一個字符串在 Unicode 平臺上的字節(jié)數(shù)是它在非 Unicode 平臺上的兩倍。
保留動態(tài)數(shù)組的內(nèi)容
每次執(zhí)行 ReDim 語句時,當(dāng)前存儲在數(shù)組中的值都會全部丟失。Visual Basi 重新將數(shù)組元素的值置為 Empty(對 Variant 數(shù)組)、置為 0(對 Numeric 數(shù)組)、置為 零長度字符串(對 String 數(shù)組)或者置為 Nothing(對于對象的數(shù)組)。
,這樣做是非常有用的。有時希望改變數(shù)組大小又不丟失數(shù)組中的數(shù)據(jù)。使用具有 Preserve 關(guān)鍵字的 ReDim Preserve DynArray (UBound (DynArray) + 1)
ReDim Preserve Matrix (10, UBound (Matrix, 2) + 1)
而不可這樣編程:
ReDim Preserve Matrix (UBound (Matrix, 1) + 1, 10)