【问题标题】:Passing Listobject Range to array and getting error "out of range"将 Listobject Range 传递给数组并出现“超出范围”错误
【发布时间】:2019-06-04 06:43:04
【问题描述】:

为了在循环 Listobject 的数据范围的思想值时提高代码的速度,我想将列的值传递给数组并循环遍历数组,而不是循环遍历 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(listobject 的行项)

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

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

谢谢。

【问题讨论】:

    标签: arrays excel range dimension listobject


    【解决方案1】:

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

    MsgBox (ListofSC(1, 1))
    

    希望有帮助

    【讨论】:

    • 太好了。谢谢。我建议大家将 listobject 值传递给数组,然后执行搜索循环。更快。
    猜你喜欢
    • 2019-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-13
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多