如何对工作簿中的每个 Listobject table 使用 .DataBodyRange.Delete
how to use .DataBodyRange.Delete for each Listobject table in a workbook
我试图在单个工作簿中遍历多个 table 并清除这些 table 上的数据,以便可以输入新数据。由于行数、列数、名称和 table 的数量可能会发生变化,我希望创建一个宏来遍历 table 并执行 .DataBodyRange.Delete
1 table 的工作代码由 sheet 和对象名称调用:
我也在论坛上找到了这段代码,我相信 IF 部分考虑了已经为空的 table,因此不会引发错误。
Sub ResetTable()
With ThisWorkbook.Sheets("SheetName").ListObjects("ListObjectName")
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
End Sub
我试图将其变成一个更动态的循环:
由于编译错误:未找到方法或数据成员。.tbl 导致第二组代码失败。所以我正在寻找任何帮助来修复以下代码或使用完全不同的路径。
Sub ResetAllTables()
Dim tbl As ListObject
Dim ws As Worksheet
'Loop through each sheet and table in the workbook
For Each ws In ThisWorkbook.Worksheets
For Each tbl In ws.ListObjects
'Do something to all the tables...
With ws.tbl
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
tbl.ShowTotals = True
Next tbl
Next sht
End Sub
提前致谢!
根据 BigBen 和 SRJ 的建议,
将 with ws.tbl
更改为 with tbl
解决了这个问题。还必须将 Next sht
修复为 Next ws
感谢您的帮助!
我试图在单个工作簿中遍历多个 table 并清除这些 table 上的数据,以便可以输入新数据。由于行数、列数、名称和 table 的数量可能会发生变化,我希望创建一个宏来遍历 table 并执行 .DataBodyRange.Delete
1 table 的工作代码由 sheet 和对象名称调用:
我也在论坛上找到了这段代码,我相信 IF 部分考虑了已经为空的 table,因此不会引发错误。
Sub ResetTable()
With ThisWorkbook.Sheets("SheetName").ListObjects("ListObjectName")
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
End Sub
我试图将其变成一个更动态的循环:
由于编译错误:未找到方法或数据成员。.tbl 导致第二组代码失败。所以我正在寻找任何帮助来修复以下代码或使用完全不同的路径。
Sub ResetAllTables()
Dim tbl As ListObject
Dim ws As Worksheet
'Loop through each sheet and table in the workbook
For Each ws In ThisWorkbook.Worksheets
For Each tbl In ws.ListObjects
'Do something to all the tables...
With ws.tbl
If Not .DataBodyRange Is Nothing Then
.DataBodyRange.Delete
End If
End With
tbl.ShowTotals = True
Next tbl
Next sht
End Sub
提前致谢!
根据 BigBen 和 SRJ 的建议,
将 with ws.tbl
更改为 with tbl
解决了这个问题。还必须将 Next sht
修复为 Next ws
感谢您的帮助!