如何对工作簿中的每个 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

感谢您的帮助!