У меня есть таблица, которую я использую для отображения данных. Я хочу, чтобы он изменил свой размер в зависимости от размера данных, которые должны отображаться. Я уже реализовал эту часть.
Однако у меня возникли проблемы с последующей очисткой стола. Я хочу написать функцию, которая очищает все поля в таблицах DataBodyRange и изменяет размер до 1, не изменяя ничего в таблице . Я также хотел бы не полагаться на код, такой как
Worksheets("Sheet").ListObjects("table").Resize Range("B13:K15")
, который использует ссылку на определенные ячейки stati c, такие как B13 или K15, поскольку перемещение таблицы нарушило бы функцию, если бы я использовал это.
Что мне нужно, так это «Изменить размер DataBodyRange до 1 строки». Как мне это сделать?
РЕДАКТИРОВАТЬ:
Ответ Дагана в основном делает то, что я хочу, однако я больше не могу выбирать свои таблицы DataBodyRange после использования функция очистки.
Мой код:
Функция очистки:
Sub clearAllocationsView()
Worksheets("sheet").ListObjects("table").DataBodyRange.ClearContents
Worksheets("sheet").ListObjects("table").Resize Range("table[#All]").Resize(2, 10)
End Sub
Функция заполнения таблицы:
Sub getAllocations()
Dim cmd As New ADODB.Command
Set t = Worksheets("sheet").ListObjects("table").DataBodyRange
data = transposeArray(cn.Execute("select * from some_table").GetRows)
t.Resize(UBound(data, 1) - LBound(data, 1) + 1, UBound(data, 2) - LBound(data, 2) + 1) = data
End Sub
Где находится transposeArray просто написанная функция транспонирования, потому что стандартная транспонирование VBA имеет проблемы с нулевыми значениями.
Чтобы дать более подробную информацию о текущей ситуации: моя функция заполнения таблицы работает (заполнение данных и изменение размера таблицы в зависимости от размера данных) , функция очистки работает, однако после вызова функции очистки я больше не могу вызывать ни заполнение таблицы, ни функцию очистки, обе ошибки с
объектной переменной с блочной переменной, не установленной
относительно DataBodyRange таблицы.
Есть идеи?