Arrays 在excel VBA中创建动态数组而不是“dim”时,是否有任何理由使用“redim”?
我正在Excel VBA中创建一个二维动态数组。我能找到的大多数代码示例如下所示:Arrays 在excel VBA中创建动态数组而不是“dim”时,是否有任何理由使用“redim”?,arrays,vba,excel,multidimensional-array,Arrays,Vba,Excel,Multidimensional Array,我正在Excel VBA中创建一个二维动态数组。我能找到的大多数代码示例如下所示: Dim companyArray() As Variant Dim height, width As Integer width = 2 height = WorksheetFunction.CountA(Worksheets(1).Columns(1)) ReDim companyArray(height, width) 在获得高度变量的值后,是否有理由不想声明数组?如果可能的话,我不想避免使用ReDim吗?
Dim companyArray() As Variant
Dim height, width As Integer
width = 2
height = WorksheetFunction.CountA(Worksheets(1).Columns(1))
ReDim companyArray(height, width)
在获得高度变量的值后,是否有理由不想声明数组?如果可能的话,我不想避免使用ReDim吗?Dim companyarray 1到5是静态大小调整:需要边界是编写代码时已知的常量
Redim companyArray1到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
Dim companyArray1到5是静态大小调整:需要边界是编写代码时已知的常量
Redim companyArray1到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
Dim和ReDim不可互换,它们做不同的事情。您已将CompanyRay调暗,因此必须使用ReDim。另一种方法是不调暗代码上部的变量,然后在当前使用ReDim的位置立即使用Dim。您只能对变量进行一次调暗,从那时起,您必须使用Redim。至少这是理论。实际上,Dim和ReDim是不可互换的,它们做的事情不同。你已经调暗了CompanyRay,所以你必须使用ReDim。另一种方法是不调暗代码上部的变量,然后在当前使用ReDim的位置立即使用Dim。您只能对变量进行一次调暗,从那时起,您必须使用Redim。至少这是理论。实际上它是这样的:编码时间,也就是编译时间-@Mat'sMug,应用程序的Visual Basic:编码时间,又称编译时间-@Mat'sMug,应用程序的Visual Basic: