在 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