Excel VBA — сохранение столбца таблицы в переменной диапазона

В настоящее время я экспериментирую с Excel VBA ListObjects, который является типом объекта таблицы Excel. Я хочу сохранить диапазон столбцов таблицы в переменной.

Вот что я могу сделать:

'store a group of cells into a range variable
dim rng as Range
set rng = activesheet.Range("A1:A10")

'select a table column
dim table as ListObject
set table = activesheet.listobjects("Table1")
table.ListColumns(1).Range.Select

Хотя оба вышеуказанных варианта работают, я не понимаю, почему не работает следующее: (EDIT: это работает)

dim rng_column as Range
set rng_column = table.ListColumns(1).Range

Я экспериментировал с другими типами переменных, такими как variant или ListColumn, однако ничто не сохраняло ячейки в переменную. В приведенном выше примере ошибки нет, но переменная rng_column остается <empty> Я знаю, что есть другие обходные пути, но я действительно хочу понять, в чем здесь проблема.


ОБНОВЛЕНИЕ После некоторых полезных комментариев я смог сузить проблему. Все работало нормально. Однако я сделал две ошибки.

Во-первых, у меня была орфографическая ошибка в именах переменных. (Я должен был включить опцию явно, чтобы заметить это раньше).

Во-вторых, я передал переменную диапазона другой переменной диапазона, где я забыл включить ключевое слово set при этом.

Надеюсь, кто-то сможет научиться на моих ошибках..


person Axel    schedule 17.10.2017    source источник
comment
Этот код работает для меня. Стол точно там, где вы думаете? rng здесь не уместно?   -  person SJR    schedule 17.10.2017
comment
У меня они работают, какую ошибку вы получаете?   -  person Scott Craner    schedule 17.10.2017
comment
Попробуйте эту строку в конце и посмотрите, что она возвращает MsgBox rng_column(1).   -  person SJR    schedule 17.10.2017
comment
Я не получаю ошибку, я пытаюсь вставить переменную rng_column в следующую WorksheetFunction.Match(search, rng_column, 0). Здесь возникает ошибка, потому что rng_column пусто. В режиме отладки над переменной отображается ‹пусто›   -  person Axel    schedule 17.10.2017
comment
Спасибо @SJR, это работает. Я предполагаю, что ошибка должна быть где-то еще..   -  person Axel    schedule 17.10.2017


Ответы (1)


у вас опечатка в названии. технически вы не можете хранить какие-либо данные в переменной диапазона.

переменная диапазона — это ссылка (указатель) на ячейку или группу ячеек. данные сохраняются в ячейках, на которые указывает переменная диапазона.

если вам нужно хранить данные из диапазона, назначьте диапазон.значение массиву

если вы хотите хранить данные из одной ячейки, присвойте значение «обычной» (не объектной) переменной (строка, целое число, длинное...)

person jsotola    schedule 17.10.2017