Я пытаюсь получить диапазон ячеек второго столбца таблицы в Excel, используя код VBA, и автоматически обновлять этот диапазон, если в таблице появляются новые записи каждый раз, когда пользовательская форма инициализируется. Сначала я думал, что это будет легко, но сейчас я полностью потерян и не могу понять, как заставить мой код работать. Возможно, я чего-то упускаю.
Я искал на этом форуме и нашел два возможных решения, первое из них:
Sub test()
Dim table As ListObject
Set table = ActiveSheet.ListObjects("Table1")
Debug.Print table.ListColumns(2).Range.Rows.Count
End Sub
Этот код вроде работает. Он успешно распознает Table1
со всеми новыми строками каждый раз, когда я запускаю его. Проблема в том, что он идентифицирует всю таблицу, я просто хочу получить диапазон одного столбца. Независимо от того, что я делаю, переменная table
всегда получает диапазон всей таблицы.
Я нашел второй подход следующим образом:
Sub test()
Dim tbl as ListObject
Dim rng as Range
Set tbl = ActiveSheet.ListObjects("Table1")
Set rng = tbl.ListColumns(2).DataBodyRange
End Sub
Этот код тоже вроде работает, но только если таблица содержит одну строку данных. Если в моей таблице только одна строка данных, переменная rng
идентифицирует таблицу и строку без проблем. Однако значением переменной является значение ячейки, например «Образец текста», а не диапазон ячеек. И если я попытаюсь добавить еще строки, переменная rng
останется пустой.
Я был бы очень признателен за любые указания с этим. Следует также отметить, что я хочу получить диапазон столбца, который принадлежит указанной таблице, даже при активном использовании другого листа, например C3:C5
. И когда вводятся дополнительные данные для получения обновленного диапазона, например C3:C80
. Я не хочу выбирать диапазон, просто получить эту информацию и использовать ее для других целей.