2017-02-26 150 views
0

我是非常新的vba。所以,一個簡單的問題。在工作表中,我有用整數填充的單元格。說,單元格A1到E1。我想將數據存儲在數組中,然後解決具體的值。運行下面的代碼有一個錯誤「下標超出範圍」。我究竟做錯了什麼?提前致謝。陣列和範圍在vba

Sub bounds() 

    Dim Arr() As Variant 

    Arr = Range("A1:E1") 

    Debug.Print Arr(1) 

End Sub 
+0

嘗試了Arr = Application.Transpose(Range(「A1:E1」)),但仍出現同樣的錯誤。現在試圖谷歌進一步,但仍然沒有。感謝Shai Rado! – philipsavenkov

+0

'Debug.Print Arr(1,1)' – Slai

+0

Slai,謝謝。這工作 – philipsavenkov

回答

0

一種更簡便的方法可以枚舉值與多維數組也工作:

Dim arr(), v ' As Variant is optional 

arr = [A1:E1] 

For Each v in arr 
    Debug.Print v 
Next 
+0

這個工程!再次感謝。但是在這裏你創建「v」作爲另一個數組。我不確定是否將數組「v」作爲另一個數組的參數的想法「arr」 – philipsavenkov

+0

v是單個值而不是數組,並且必須與數組的類型匹配 – Slai

+0

好的。真的很感謝你的關注! – philipsavenkov

1

嘗試下面的代碼(如果你想使用一個1-d陣列):

Sub bounds() 

    Dim Arr() As Variant 
    Dim i As Long 

    ' use transpose to read the range to 1-D array 
    Arr = Application.Transpose(Application.Transpose(Range("A1:E1"))) 

    ' loop through all elements in array 
    For i = LBound(Arr) To UBound(Arr) 
     Debug.Print "Arr index " & i & " value is " & Arr(i) 
    Next i 

End Sub 
+0

工作。非常感謝您的幫助!我還找到了通過在Arr中使用兩個參數而不是一個來解決每個元素的方法。 – philipsavenkov