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