从所有Excel表VBA中删除filter

我正在创build一些Excel加载项来为我们的用户完成一些基本的任务。 我们有一个电子表格提供给我们的用户为我们的每个项目。 在我们处理到SQL数据库的转换之前,他们使用这些电子表格对可configuration项目进行更改。 当他们完成电子表格时,往往会忘记取消隐藏行,列和/或删除filter。 我想要创build一个macros,可以运行从每个工作表中取消隐藏行/列,并清除每个ListObject的filter。 这是我试图使用的代码:

Sub RemoveFiltersUnhide() Dim i As Long Application.ScreenUpdating = False For i = 1 To ThisWorkbook.Worksheets.Count ThisWorkbook.Worksheets(i).AutoFilterMode = False ThisWorkbook.Worksheets(i).Rows.Hidden = False ThisWorkbook.Worksheets(i).Columns.Hidden = False Next i Application.ScreenUpdating = True End Sub 

该代码的作品,以取消隐藏每个工作表上的行/列,但它不清除filter。 由于每个提供的工作簿将不同,不会包含相同的工作表或列表对象,我不知道如何去循环每个表。 任何人有任何想法,我怎么可以这样做?


工作VBA:

 Sub RemoveFiltersUnhide() Dim ws As Worksheet, lo As ListObject Application.ScreenUpdating = False For Each ws In ThisWorkbook.Worksheets ws.Rows.Hidden = False ws.Columns.Hidden = False For Each lo In ws.ListObjects lo.AutoFilter.ShowAllData Next Next Application.ScreenUpdating = True End Sub 

如果这里提供的语法是正确的,下面的工作。

 Dim Sheet As Excel.Worksheet, List As Excel.ListObject For Each Sheet In ThisWorkbook.Sheets For Each List In Sheet.ListObjects List.AutoFilter.ShowAllData Next Next 

代码将是这样的。

 Sub RemoveFiltersUnhide() Dim i As Long Dim Ws As Worksheet Application.ScreenUpdating = False For Each Ws In Worksheets With Ws If .FilterMode Then .ShowAllData End If .Rows.Hidden = False .Columns.Hidden = False End With Next Ws Application.ScreenUpdating = True End Sub