Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在excel VBA中创建动态数组而不是“dim”时,是否有任何理由使用“redim”?_Arrays_Vba_Excel_Multidimensional Array - Fatal编程技术网

Arrays 在excel VBA中创建动态数组而不是“dim”时,是否有任何理由使用“redim”?

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吗?

我正在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 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: