我有一个 3 维数组。我想从 Excel VBA 中的多个模块访问该数组。因此,我使用 Public 来声明它。目前我使用这段代码:
Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double
我想在代码启动时根据数据大小将第一个和第三个变量初始化为某个值。
由于 ReDim 只能用于数组中的最后一个变量,因此我正在尝试执行类似的操作,尽管这是不可能的:
If x < 400 and z < 3000 Then
Public MyData(1 To 400, 1 To 10, 1 To 3000) As Double
End If
If x < 200 and z < 1000 Then
Public MyData(1 To 200, 1 To 10, 1 To 1000) As Double
End If
有没有办法根据条件(x 和 z 的值低于某个级别)来初始化数组?
谢谢!
最佳答案
ReDim
可以对任何尺寸进行。ReDim Preserve
仅限于修改最后一个维度,保留现有的加载项目值。但对于ReDim Preserve
来说,也存在一种解决方法:将最后一个维度设置为要重新保存的维度,最后转置数组;ReDim
只能对已声明的数组执行,但在声明期间无需设置尺寸。因此,以下面的方式声明它:
Public MyData() As Double
将根据您的需要工作...
Public
变量只能放置在模块顶部的声明区域中。因此,那里不允许任何此类代码。您只能像您尝试的那样在Sub/Function
模块中ReDim
它,前提是您按照我上面建议的方式声明它
关于excel - 有没有办法根据条件初始化公共(public)数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63547524/