Excel vba中的数组和范围
我是vba的新手。所以,一个简单的问题。在工作表中,我用整数填充单元格。比如说,单元格A1到E1。我希望将数据存储在一个数组中,然后将其寻址到特定的值。运行下面的代码时,错误下标超出范围。我做错了什么?提前谢谢Excel vba中的数组和范围,excel,vba,Excel,Vba,我是vba的新手。所以,一个简单的问题。在工作表中,我用整数填充单元格。比如说,单元格A1到E1。我希望将数据存储在一个数组中,然后将其寻址到特定的值。运行下面的代码时,错误下标超出范围。我做错了什么?提前谢谢 Sub bounds() Dim Arr() As Variant Arr = Range("A1:E1") Debug.Print Arr(1) End Sub 如果要使用一维阵列,请尝试以下代码: Sub bounds() Dim Arr(
Sub bounds()
Dim Arr() As Variant
Arr = Range("A1:E1")
Debug.Print Arr(1)
End Sub
如果要使用一维阵列,请尝试以下代码:
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
另一种更简单的方法是枚举值,因为这也适用于多维数组:
Dim arr(), v ' As Variant is optional
arr = [A1:E1]
For Each v in arr
Debug.Print v
Next
尝试了Arr=Application.transferangea1:E1,但仍然出现了相同的错误。现在正试图用谷歌进一步搜索,但仍然一无所获。谢谢Shai Rado!调试。打印Arr1,1Slai,谢谢。这是有效的。非常感谢你的帮助!我还找到了通过在Arr中使用两个参数而不是一个参数来寻址每个元素的方法。这很有效!再次感谢。但这里您创建了v作为另一个数组。我不确定我是否理解数组v是另一个数组的参数,arrv是一个单值而不是数组,并且必须匹配arrayOk的类型。非常感谢您的关心!