使用VBA动态调整Listobject表的大小

Rya*_*ala 13 excel vba

我想通过VBA更改对象表的大小,我尝试修改msdn.microsoft.com中有关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
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

提前致谢

在此输入图像描述

MJH*_*MJH 15

问题是Range("A1" & Lrow1)返回一个Range $A$112,因为你传递的Range函数是连接的结果"A1" & "12".

尝试替换此行:

ob.Resize Range("A1" & Lrow1)
Run Code Online (Sandbox Code Playgroud)

有了这个:

ob.Resize ob.Range.Resize(Lrow1)
Run Code Online (Sandbox Code Playgroud)


pst*_*ton 7

如果您只需要调整行维度的大小:

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's argument is a Range object (not a size spec).
End With
Run Code Online (Sandbox Code Playgroud)

仅调整列尺寸的大小将是对称的:

With tbl.Range
    tbl.Resize .Resize(, .CurrentRegion.Columns.Count)
End With
Run Code Online (Sandbox Code Playgroud)


Joh*_*nyL 6

有一种避免计算最后一行的方法:

Sub ResizeListDyn()
    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects(1)
    tbl.Resize tbl.Range.CurrentRegion
End Sub
Run Code Online (Sandbox Code Playgroud)