动态标注VBA阵列?

soo*_*ise 23 arrays vba

为什么我无法根据变量设置数组的大小?最好的方法是什么?

Dim NumberOfZombies as integer
NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) as New Zombie
Run Code Online (Sandbox Code Playgroud)

Cod*_*ray 42

如果在运行时之前不知道它将包含的值的数量,则可以使用动态数组:

Dim Zombies() As Integer
ReDim Zombies(NumberOfZombies)
Run Code Online (Sandbox Code Playgroud)

或者,如果要创建一个过程本地的数组,则可以使用一个语句执行所有操作:

ReDim Zombies(NumberOfZombies) As Integer
Run Code Online (Sandbox Code Playgroud)

固定大小的数组需要在编译时知道包含的元素数.这就是为什么你不能使用变量来设置数组的大小 - 按定义,变量的值是可变的,只在运行时知道.

如果您知道变量的值不会改变,则可以使用常量:

Const NumberOfZombies = 2000
Run Code Online (Sandbox Code Playgroud)

但是没有办法在常量和变量之间进行转换.它们有明显不同的含义.