在 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