Public Dynamic Array返回错误

时间:2009-08-21 10:40:07

标签: vba excel-vba excel

大家好我收到错误

Run-time error '9':
Subscript out of range 

使用以下代码

Public newarray() As String

Sub test1() 
    Dim int1 As Integer 
    int1 = 0
    Do 
        int1 = int1 + 1 
        newarray(int1) = int1 * 5     
    Loop Until int1 > 3
End Sub

当我判断数组时

Public newarray(4) As string

它可以工作,但我希望声明一个动态数组。请帮忙。谢谢。

1 个答案:

答案 0 :(得分:8)

您可以使用ReDim

分配数组大小
Public newarray() As String

Sub test1() 

    Dim int1 As Integer 
    ReDim newarray(4)

    int1 = 0

    Do 

        int1 = int1 + 1 

        newarray(int1) = int1 * 5 

    Loop Until int1 > 3

End Sub

这将重新定义整个阵列。如果您需要保留数组的内容,只需更改大小,则可以使用ReDim Preserve newarray(4)

您的代码假定数组是基于1的。这可以是0(基于VB中的选项设置)。无论此选项如何,为确保您的代码有效,您应使用LBound / UBound作为计数器的限制:

    int1 = LBound(newarray)

    Do 

        newarray(int1) = int1 * 5 

        int1 = int1 + 1 


    Loop Until int1 > UBound(newarray)