我是非常新的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