В настоящее время я экспериментирую с 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
при этом.
Надеюсь, кто-то сможет научиться на моих ошибках..
rng
здесь не уместно? - person SJR   schedule 17.10.2017MsgBox rng_column(1)
. - person SJR   schedule 17.10.2017rng_column
в следующуюWorksheetFunction.Match(search, rng_column, 0)
. Здесь возникает ошибка, потому чтоrng_column
пусто. В режиме отладки над переменной отображается ‹пусто› - person Axel   schedule 17.10.2017