爲什麼我無法根據變量設置數組的大小?最好的解決辦法是什麼?動態標註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