Dim companyArray(1 to 5)
是靜態大小調整:需要您編寫代碼時知道的邊界是常量。
Redim companyArray(1 to x)
是動態調整大小,在程序運行時計算邊界時需要。
在編碼時未知任何邊界(在任何維上)時,Redim
是唯一選項。
謹慎
Redim
的話不需要這個變量來之前變暗,你可以聲明和REDIM動態數組。 但是,這樣做有一定的風險。考慮這個
' Module
Dim X as variant ' some module-level (or global) variable
''''''''''''''''''
' Some code
'''''''''''''''''
Sub foo()
Redim X(1 to 3) as long ' <-- Will redim the global X
....
End Sub
如果寫foo
當程序員的意圖是一次性申報局部變量和Redim it
,那麼這將失敗,因爲Redim
聲明將在全球X操作,因爲它是在範圍之內。
的底線是,Redim
聲明並redims變量,但如果具有相同名稱的變量在其範圍存在,它將REDIM,而不是創建一個新的變量,變量。出於這個原因,儘管這不是絕對必要的,但在Redim
之前使用Dim
是比較安全的,這是通過良好實踐的規則。
Sub foo()
Dim X() as Long
Redim X(1 to 3) as long ' <-- Will now refer to the local variable X
....
End Sub
Dim和ReDim不可互換,他們做不同的事情。 – RBarryYoung
您已經「變暗」了'companyArray',所以您必須使用'redim'。另一種方法是不要在代碼的上半部分「變暗」變量,然後立即在當前使用「ReDim」的地方使用「Dim」。你只能「變暗」一次變量,然後你必須使用'Redim'。 (至少這是理論,實際上它是這樣的:http://stackoverflow.com/questions/12907050/redim-without-dim) – Ralph