我正在创建一些Excel加载项来为我们的用户完成一些基本任务。我们有一个电子表格提供给我们的用户,用于我们的每个项目。在我们处理转换到SQL数据库之前,他们使用这些电子表格来更改可配置项目。当他们完成电子表格时,他们经常会忘记取消隐藏行,列和/或删除过滤器。我想创建一个宏,可以从每个工作表中取消隐藏行/列并清除每个ListObject中的过滤器。这里是代码,我尝试使用:删除所有Excel表中的过滤器VBA
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
代码工作,以取消隐藏在每张纸上行/列,但它没有明确的过滤器。由于每个提供的工作簿都会有所不同,并且不会包含相同的工作表或列表对象,因此我不知道如何去循环每个表。任何人有任何想法我可以如何处理这个?
工作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
如果要清除表单中的过滤器,请尝试此操作。(https://stackoverflow.com/a/21761226/8060864)对于表(ListObjects),[请尝试此操作。](https:/ /stackoverflow.com/a/33208645/8060864) –
谢谢。我以前看过这些。由于我的表格(列表对象)会因项目而异,所以这对我不起作用。 –
因此,您需要遍历工作簿中所有工作表中的所有ListObjects? –