可变大小的公共数组变量

时间:2017-01-19 20:16:32

标签: arrays excel vba global-variables

我想在Excel VBA中拥有一个全局数组变量,其数组大小取决于第二个全局变量。

我正在尝试这样的事情......

Public int1 As Integer

Sub foo()
    int1 =  '##read from ini file
    Public varArray(1 To int1) As Variant
    For i = 1 To int1
        varArray(i)= '##read from ini file
    Next i
    Call SomeProcedure '##in another module where varArray is used
End Sub

现在显然这不起作用,因为必须在sub之外声明全局公式,并且当我给它们一个范围时,似乎Arrays也需要一个常量。有什么办法可以通过宣布

来实现
Public varArray() As Integer

然后再给它一些元素?它似乎没有让我这样做,我没有尝试过其他任何东西......

1 个答案:

答案 0 :(得分:1)

正如您所提到的,数组必须在sub之外声明为全局。

要确定数组大小,请在确定阵列需要的大小后,在另一个函数内部使用ReDim命令。

Dim varArray() As Variant

Public Sub Foo()
    'Determine size of array
    'For example, let's say you determine you need 15 elements
    ArraySize = 15 'Your variable here, instead of 15

    ReDim varArray(1 To ArraySize)

    'Debug Print statement to confirm array dimensions
    Debug.Print LBound(varArray) & " - " & UBound(varArray)
End Sub