【发布时间】:2020-03-21 01:31:51
【问题描述】:
我正在开发一个程序,该程序需要从同一工作簿的另一个工作表中的单元格中读取一组值。我能够读取一个值就好了,但是当我尝试读取多个时,我无法返回一个数组。
这是我想要做的:
Dim list() As Variant
list = ActiveWorkbook.Worksheets("Sheet2").Range("A2:C2").value
Debug.Print TypeName(list)
Debug.Print UBound(list)
Debug.Print LBound(list)
Debug.Print TypeName(list(UBound(list)))
输出是:
Variant()
1
1
Subscript out of range
但是,如果我在我期望一个字符串而不是字符串数组的地方尝试它
Dim value As String
Let value = ActiveWorkbook.Worksheets("Site IDs and CJONs").Range("A2").value
Debug.Print TypeName(value)
Debug.Print value
我得到了输出
String
Expected Value
根据this question,我应该能够简单地从 range 函数返回一个数组(示例来自下面的答案),但它似乎对我不起作用。我做错了什么?
Dim DirArray As Variant
DirArray = Range("a1:a5").Value
【问题讨论】:
-
请注意,单个单元格是一种特殊情况,请参阅 cpearson.com/excel/ArraysAndRanges.aspx... 并且这些是二维数组。
-
List如果有多个单元格,则为二维数组,因此您需要同时引用两者。例如debug.print list(1,1) -
@RonRosenfeld 谢谢,为我修好了。
-
这个答案展示了如何使用转置使其成为一维数组。如果您的范围是一行,则需要使用转置两次。 stackoverflow.com/questions/37689847/…