2016-04-26 65 views
1
Sub ArrTest() 
Dim Arr() As Variant 

    Arr(1, 1) = "Test" 

End Sub 

我沒有對該數組進行維數定位,因爲我不知道它需要的大小。我最終會將這個數組寫入電子表格。我試圖將未來編寫的單元格的左上角分配爲「測試」。爲動態數組元素賦值會導致下標超出範圍錯誤

現在,如果我理解正確的動態數組開始索引在0,所以第一個元素真的是Arr(0,0)。我嘗試了Arr(0,0)並得到了相同的錯誤。

我想真正的問題是:

如何將一個值賦給一個未定義的動態數組的元素?

回答

1

在使用之前,您必須將陣列調暗至一定的大小。這很簡單:

Sub ArrTest() 
    Dim Arr() As Variant 

    redim Arr(0 to 1, 0 to 1) 
    Arr(1, 1) = "Test" 

    redim preserve Arr(0 to 2, 0 to 1) 
    Arr(2, 1) = "Test2" 

End Sub 

redim方法將redimension你的數組。使用關鍵字Preserve將確保在重新調整過程中存儲在數組中的數據不會丟失。

+1

所以如果後來我有它卡在一個X循環的中間,我將不得不每次redim數組。並且,當您重新調整時,您只需將上部索引號調整爲新號碼即可。所以我可以做'redim保存Arr(0到X,0到1)'。 –

+0

我假設你在保存的例子中意外丟棄了Arr? –

+0

兩種都可以。在一個循環中,每次你都會'保留'。我確實在保留聲明中放棄了「Arr」。 – JNevill