我正在尝试设置这样的公共动态数组:
Public BenData(1 To Worksheets("Database").Range("A9").End(xlDown).Row, 1 To 4)
但VBA不允许这样做。有什么办法吗?
答案 0 :(得分:0)
该问题与变量是公共变量还是私有变量无关--VBA要求 任何 变量声明是一个常量表达式。这实际上是ReDim
语句存在的原因 - 正常Dim foo(10) As Bar
表达式将在编译时创建内存分配。除了使用API调用之外,ReDim
是在运行时分配内存的唯一方法。如评论中所述,如果您确实需要全局动态数组,则需要在运行时对其进行初始化:
Public BenData() As Variant
Sub UseBenData()
ReDim BenData(1 To Worksheets("Database").Range("A9").End(xlDown).Row, 1 To 4)
'...
End Sub