我是非常新的vba。所以,一個簡單的問題。在工作表中,我有用整數填充的單元格。說,單元格A1到E1。我想將數據存儲在數組中,然後解決具體的值。運行下面的代碼有一個錯誤「下標超出範圍」。我究竟做錯了什麼?提前致謝。陣列和範圍在vba
Sub bounds()
Dim Arr() As Variant
Arr = Range("A1:E1")
Debug.Print Arr(1)
End Sub
我是非常新的vba。所以,一個簡單的問題。在工作表中,我有用整數填充的單元格。說,單元格A1到E1。我想將數據存儲在數組中,然後解決具體的值。運行下面的代碼有一個錯誤「下標超出範圍」。我究竟做錯了什麼?提前致謝。陣列和範圍在vba
Sub bounds()
Dim Arr() As Variant
Arr = Range("A1:E1")
Debug.Print Arr(1)
End Sub
一種更簡便的方法可以枚舉值與多維數組也工作:
Dim arr(), v ' As Variant is optional
arr = [A1:E1]
For Each v in arr
Debug.Print v
Next
這個工程!再次感謝。但是在這裏你創建「v」作爲另一個數組。我不確定是否將數組「v」作爲另一個數組的參數的想法「arr」 – philipsavenkov
v是單個值而不是數組,並且必須與數組的類型匹配 – Slai
好的。真的很感謝你的關注! – philipsavenkov
嘗試下面的代碼(如果你想使用一個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
工作。非常感謝您的幫助!我還找到了通過在Arr中使用兩個參數而不是一個來解決每個元素的方法。 – philipsavenkov
嘗試了Arr = Application.Transpose(Range(「A1:E1」)),但仍出現同樣的錯誤。現在試圖谷歌進一步,但仍然沒有。感謝Shai Rado! – philipsavenkov
'Debug.Print Arr(1,1)' – Slai
Slai,謝謝。這工作 – philipsavenkov