Vba 在运行宏之前从所有工作表中删除筛选

Vba 在运行宏之前从所有工作表中删除筛选,vba,excel,Vba,Excel,我想在我拥有的每个宏之前放一个小代码,从工作簿的所有工作表中删除任何过滤器 我所做的如下,但它似乎没有正常工作。当我点击按钮时,它不会移除过滤器,但如果我逐行运行它,它会移除过滤器 我不明白 WS_Count = ActiveWorkbook.Worksheets.Count ' Begin the loop to disable all filters For i = 1 To WS_Count If (ActiveSheet.AutoFilterMode And ActiveShe

我想在我拥有的每个宏之前放一个小代码,从工作簿的所有工作表中删除任何过滤器

我所做的如下,但它似乎没有正常工作。当我点击按钮时,它不会移除过滤器,但如果我逐行运行它,它会移除过滤器

我不明白

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循环
没有被使用,因为您没有引用
i
。此外,如果
语句的第二个条件基本上使第一个条件不相关,请尝试以下操作:

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
删除过滤器的示例如下:

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