我想通过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)
如果您只需要调整行维度的大小:
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)
有一种避免计算最后一行的方法:
Sub ResizeListDyn()
Dim tbl As ListObject
Set tbl = ActiveSheet.ListObjects(1)
tbl.Resize tbl.Range.CurrentRegion
End Sub
Run Code Online (Sandbox Code Playgroud)