Array()= range()。value

时间:2015-08-24 14:52:02

标签: excel-vba vba excel

我在一个例子中看到array() = range().value,我试图了解它是如何工作的。

Sub test()
Dim arr() As Variant

arr() = Range("E5:E7").Value
For i = 0 To UBound(arr)
    Debug.Print arr(i)
Next i

End Sub

首先,上面的代码给出了subscript out of range错误。怎么会 ?其次,文档的哪一部分会让我知道array() = range().value如何在不进行测试的情况下发挥作用?我的假设是它将从左上角到右下角穿过细胞并将它们添加到阵列中。我怎么能确认呢?

1 个答案:

答案 0 :(得分:1)

这是一本很好的读物:http://www.cpearson.com/excel/ArraysAndRanges.aspx

您获得"超出范围的原因"是因为它返回一个二维数组。

您的代码行For i = 0 To UBound(arr)应为For i = 1 To UBound(arr,1)

此外,阵列从1开始,所以不要使用0 For i = 1 to UBound(arr, 1)

您更正后的代码为:

Sub Test()

Dim arr() as Variant
arr = Range("E5:E7")
For i = 1 To UBound(arr, 1)
    MsgBox (arr(i, 1))
Next i

End Sub