我在一个例子中看到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
如何在不进行测试的情况下发挥作用?我的假设是它将从左上角到右下角穿过细胞并将它们添加到阵列中。我怎么能确认呢?
答案 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