Изменение размера таблицы Listobject динамически с помощью VBA
Я хочу изменить размер таблиц объектов через VBA, я пытался изменить код из MSDN о методе listobject.resize
, но я хочу динамически, если данные загружаются в каждую строку.
Код, который я пытаюсь, но безрезультатно:
Sub resizedata()
Dim ws As Worksheet
Dim ob As ListObject
Dim Lrow1 As Long
Lrow1 = Sheets("db_goods").Cells(Rows.Count, "E").End(xlUp).Row
Set ws = ActiveWorkbook.Worksheets("db_goods")
Set ob = ws.ListObjects("Table1")
ob.Resize Range("A1" & Lrow1)
End Sub
![enter image description here]()
Ответы
Ответ 1
Задача Range("A1" & Lrow1)
возвращает диапазон $A$112
, потому что вы передаете функцию Range
результат привязки "A1" & "12"
.
Попробуйте заменить эту строку:
ob.Resize Range("A1" & Lrow1)
С помощью этого:
ob.Resize ob.Range.Resize(Lrow1)
Ответ 2
Есть способ избежать вычисления последней строки:
Sub ResizeListDyn()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1)
tbl.Resize tbl.Range.CurrentRegion
End Sub
Ответ 3
Если вам нужно изменить размер только размера строки:
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects("YourTableName")
With tbl.Range
tbl.Resize .Resize(.CurrentRegion.Rows.Count) 'NOTE: unlike the Range.Resize proprty, the Table.Resize
'method argument is a Range object (not a size spec).
End With
Изменение размера только столбца будет симметричным:
With tbl.Range
tbl.Resize .Resize(, .CurrentRegion.Columns.Count)
End With