我编写了下面的代码,在即时窗口中打印210
。
Sub RangeToArr()
Dim data() As Variant
data = Range("Salary[EmpNum]").Value
Debug.Print UBound(data)
End Sub
当我使用bellow时,将显示Subscript out of range
运行时错误消息。
Sub RangeToArr()
Dim data() As Variant
data = Range("Salary[EmpNum]").Value
Debug.Print data(210)
End Sub
如果data
是一个数组,那么问题是什么,否则,如何访问分配给数组的范围值,如上所述?
答案 0 :(得分:2)
转换为数组的范围将创建一个二维数组,如果您尝试返回引用它的数据(210),就好像它是一个单维数组一样。您可以通过返回
从该范围内的第210个单元格中获取值data(210, 1)
我只能假设它强迫二维数组的原因。我的猜测是因为如果你的范围包括额外的列,它将是二维数组。即使您只有一列,创建二维数组的行为也意味着处理数据的方法保持不变。这有一个例外 - 如果您的范围是单个单元格,VBA将仅将该值填充为单个维度。
答案 1 :(得分:1)
要确保您的示例有效,请确保表格示例中有210行。
通常,尝试这样的方法来了解数组和范围:
MyNamedRange
Sub RangeToArr()
Dim arrVar As Variant
arrVar = Range("MyNamedRange")
Debug.Print arrVar(1, 2)
End Sub
稍微更改(1,2)
值以获得想法。