Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel vba中的数组和范围_Excel_Vba - Fatal编程技术网

Excel vba中的数组和范围

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(

我是vba的新手。所以,一个简单的问题。在工作表中,我用整数填充单元格。比如说,单元格A1到E1。我希望将数据存储在一个数组中,然后将其寻址到特定的值。运行下面的代码时,错误下标超出范围。我做错了什么?提前谢谢

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的类型。非常感谢您的关心!