Подтвердить что ты не робот

Изменение размера таблицы 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

4b9b3361

Ответ 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