在 VBA 中宣告一個陣列
宣告一個陣列非常類似於宣告一個變數,除非你需要在其名稱後面宣告 Array 的維度:
Dim myArray(9) As String 'Declaring an array that will contain up to 10 strings
預設情況下,VBA 中的陣列是從 ZERO 索引的,因此,括號內的數字不是指數組的大小,而是指最後一個元素的索引
訪問元素
訪問 Array 的元素是通過使用 Array 的名稱,後跟括號內的元素的索引來完成的:
myArray(0) = "first element"
myArray(5) = "sixth element"
myArray(9) = "last element"
陣列索引
你可以通過將此行放在模組的頂部來更改 Arrays 索引:
Option Base 1
使用此行,模組中宣告的所有陣列都將從 ONE 索引。
具體指數
你還可以使用 To
關鍵字以及下限和上限(= index)宣告每個 Array 具有自己的索引:
Dim mySecondArray(1 To 12) As String 'Array of 12 strings indexed from 1 to 12
Dim myThirdArray(13 To 24) As String 'Array of 12 strings indexed from 13 to 24
動態宣告
如果在宣告之前不知道陣列的大小,可以使用動態宣告和 ReDim
關鍵字:
Dim myDynamicArray() As Strings 'Creates an Array of an unknown number of strings
ReDim myDynamicArray(5) 'This resets the array to 6 elements
請注意,使用 ReDim
關鍵字將清除陣列的任何先前內容。為防止這種情況,你可以在 ReDim
之後使用 Preserve
關鍵字:
Dim myDynamicArray(5) As String
myDynamicArray(0) = "Something I want to keep"
ReDim Preserve myDynamicArray(8) 'Expand the size to up to 9 strings
Debug.Print myDynamicArray(0) ' still prints the element