Вопрос:
Я хочу изменить размер таблиц объектов через 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
Лучший ответ:
Задача Range(«A1» & Lrow1) возвращает диапазон $A$112, потому что вы передаете функцию Range результат привязки «A1» & «12».
Попробуйте заменить эту строку:
ob.Resize Range(«A1» & Lrow1)
С помощью этого:
ob.Resize ob.Range.Resize(Lrow1) Ответ №1
Есть способ избежать вычисления последней строки:
Sub ResizeListDyn() Dim tbl As ListObject Set tbl = ActiveSheet.ListObjects(1) tbl.Resize tbl.Range.CurrentRegion End Sub Ответ №2
Если вам нужно изменить размер только размера строки:
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