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

Excel 使用VBA动态调整Listobject表的大小,excel,vba,Excel,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

我想通过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
问题是
范围(“A1”&Lrow1)
返回的范围是
$a$112
,因为您正在将
范围
函数传递给
“A1”和“12”
的连锁结果

尝试替换此行:

ob.Resize Range("A1" & Lrow1)
关于这一点:

ob.Resize ob.Range.Resize(Lrow1)

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

Sub ResizeListDyn()
    Dim tbl As ListObject
    Set tbl = ActiveSheet.ListObjects(1)
    tbl.Resize tbl.Range.CurrentRegion
End Sub

如果只需要调整行尺寸标注的大小:

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
仅调整柱尺寸将是对称的:

With tbl.Range
    tbl.Resize .Resize(, .CurrentRegion.Columns.Count)
End With

我认为这个答案更有帮助,因为我观察到.End(xlUp)将跳转到表的最后一行,而不是跳转到相应单元格中包含实际内容的最后一行。谢谢,顺便说一句