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