Передача Listobject Range в массив и получение ошибки "вне диапазона" - PullRequest
0 голосов
/ 09 января 2019

Чтобы увеличить скорость моего кода при циклическом отображении значений данных для диапазона данных объекта Listobject, я хочу передать значения столбца в массив и проходить через массив вместо циклического перебора значений объекта Listobject.

Я получил представление здесь Оттуда я разработал этот код.

'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)

Но при доступе к элементам я получаю Subscript вне диапазона в элементе 1.

Является ли ListofSC обычным массивом измерения 1? Если так, почему я не могу получить доступ к значениям?

спасибо.

1 Ответ

0 голосов
/ 09 января 2019

Когда вы копируете данные из диапазона Excel в Variant, Excel возвращает двумерный массив. Когда ваш исходный диапазон представляет собой один столбец, вы можете получить доступ к элементам, установив для индекса 2-го измерения массива значение 1, например ::100100

MsgBox (ListofSC(1, 1))

Надеюсь, что поможет

...