为什么我无法根据变量设置数组的大小?最好的解决办法是什么?动态标注VBA阵列?
Dim NumberOfZombies as integer
NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) as New Zombie
为什么我无法根据变量设置数组的大小?最好的解决办法是什么?动态标注VBA阵列?
Dim NumberOfZombies as integer
NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) as New Zombie
您可以使用动态数组,当你不知道值的数量而定包含直到运行时:
Dim Zombies() As Integer
ReDim Zombies(NumberOfZombies)
或者你可以,如果你创建一个数组这是当地一个过程与一个语句做的一切:
ReDim Zombies(NumberOfZombies) As Integer
固定大小的数组需要包含在编译时被称为元件的数量。这就是为什么你不能使用变量来设置数组的大小 - 根据定义,变量的值是可变的,只有在运行时才知道。
如果你知道变量的值,您可以使用一个常数不会改变:
Const NumberOfZombies = 2000
,但没有办法,常量和变量之间施放。它们有明显不同的含义。
您需要使用常数。
CONST NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) As Zombies
,或者如果你想使用你所要做的是这样一个变量:
Dim NumberOfZombies As Integer
NumberOfZombies = 20000
Dim Zombies() As Zombies
ReDim Zombies(NumberOfZombies)
您必须使用ReDim语句动态调整数组的大小。
Public Sub Test()
Dim NumberOfZombies As Integer
NumberOfZombies = 20000
Dim Zombies() As New Zombie
ReDim Zombies(NumberOfZombies)
End Sub
当你已经知道数组的大小时,这看起来很奇怪,但是你去了!
你也可以看看使用集合对象。这通常作品比自定义对象的数组更好,因为它动态的大小,并且方法:
加上它通常更容易循环访问集合,因为您可以非常容易地使用for ... each结构与集合。
有没有更简单的方法在维度定义中将NumberOfZombies作为CONST右键? Dim Zombies(CONST NumberOfZombies)as new Zombie – sooprise 2010-12-01 16:44:58
我在完成打字之前提交了答案。 – carny666 2010-12-01 16:46:30