公共dinamic数组

时间:2016-11-02 13:32:13

标签: arrays excel vba

我正在尝试设置这样的公共动态数组:

Public BenData(1 To Worksheets("Database").Range("A9").End(xlDown).Row, 1 To 4)

但VBA不允许这样做。有什么办法吗?

1 个答案:

答案 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