将Listobject Range传递给数组并获得错误“超出范围”

时间:2019-01-09 13:14:41

标签: arrays excel range dimension listobject

为了在循环列表对象的数据范围的思想值时提高我的代码速度,我想将列的值传递给数组并遍历该数组,而不是循环遍历列表对象的值。

我有见识here 从那里我详细说明了这段代码。

'passing the list object to a variable
Dim SCtbl As ListObject
    Set SCtbl = ThisWorkbook.Worksheets("sc").ListObjects(1)

'dimensioning the array (as variant)
Dim ListofSC As Variant
    ListofSC = SCtbl.ListColumns("long_shortcut").DataBodyRange.Value
MsgBox (LBound(ListofSC))
MsgBox (UBound(ListofSC))
MsgBox (ListofSC(1))

第一个消息给出结果1 第二条消息给出结果708(列表对象的行项目)

但是访问元素时,我的下标超出了元素1的范围。

ListofSC实际上是尺寸为1的普通数组吗? 如果可以,为什么我不能访问这些值?

谢谢。

1 个答案:

答案 0 :(得分:1)

将数据从Excel范围复制到Variant时,Excel将返回一个二维数组。如果源范围是一列,则可以通过将数组第二维的索引设置为1来访问元素,例如:

MsgBox (ListofSC(1, 1))

希望有帮助