2009-08-21 71 views
1

你好我的全部,但是我得到一個錯誤公共動態數組返回錯誤

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 

當我decare陣列

Public newarray(4) As string 

它的工作原理,希望聲明一個動態數組。請幫忙。謝謝。

回答

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) 
+2

您可以指定ReDim語句的指標,比如'使用ReDim newarray(1-5)' – 2009-08-21 14:19:04

+0

謝謝!它有助於。 – Yoga 2009-08-24 10:01:13