运行macros之前,从所有表中删除过滤

我想在每一个macros中都放一个小代码,从我的工作簿中删除任何filter。

我所做的是以下,但似乎没有正常工作。 当我点击button,它不会删除filter,但如果我一行一行地运行它。

我不明白。

WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop to disable all filters For i = 1 To WS_Count If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If Next i 

for loop没有被使用,因为你没有引用i 。 另外, If语句的第二个标准基本上使第一个标准无关紧要,试试这个:

 WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop to disable all filters For i = 1 To WS_Count If Thisworkbook.Sheets(i).FilterMode Then Thisworkbook.Sheets(i).ShowAllData End If Next i 

要删除filter的例子会

 Option Explicit Public Sub Example() Dim Sht As Worksheet For Each Sht In Worksheets If Sht.AutoFilterMode = True Then Debug.Print Sht.Name Sht.AutoFilterMode = False End If Next End Sub 

Worksheet.AutoFilterMode属性(Excel)