2017-02-26 109 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