我目前正在Excel中进行一个项目,遇到以下问题:
Public Sub test()
Dim TestRange As Variant
TestRange = Worksheets("test_worksheet").Range("Q50:Q60").Value
' Here an error 9 (Subscript out of range) pops up
MsgBox (CStr(TestRange(2)))
End Sub
据我所知,TestRange
变量应该包含一个数组,数组的大小为11,使用UBound(TestRange) - LBound(TestRange) + 1
确认,但无论我使用什么索引,都会弹出错误9。LBound(TestRange)
的返回值为1。
我想这样做,如果可能的话,我已经读了一些答案,它应该可以把范围到一个数组,只是不知道如何从它读取。
- 请注意,这是一段测试代码,我扔在一起,以确认将
Worksheet.Range
的值放入数组中并阅读它的可能性 *
2条答案
按热度按时间q9rjltbz1#
从范围中提取的数组是2D类型,这意味着它也有列。在您的情况下只有一个。因此,您应该尝试:
如果你更喜欢1D数组,你可以通过转置将
TestRange
转换为1D类型:或者,查看立即窗口
Ctrl + G
中的所有(转置)数组:mcvgt66p2#
您当前的代码将把垂直范围读入一个二维数组。添加一行代码将数组转换为一维数组