在 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