Excel 2013 VBA Clear All Filters macro

后端 未结 26 933
花落未央
花落未央 2020-11-27 16:26

It seems older macros are not working. I have proper securtiy set to run VBA macros but when I have tried a few methods for clearing ALL filters on a worksheet, I get a comp

26条回答
  •  难免孤独
    2020-11-27 17:09

    That is brilliant, the only answer I found that met my particular need, thanks SO much for putting it up!

    I made just a minor addition to it so that the screen didn't flash and it removes and subsequently reapplies the password on each sheet as it cycles through [I have the same password for all sheets in the workbook]. In the spirit of your submission, I add this to assist anyone else....

    Sub ClearFilters()
        Application.ScreenUpdating = False
    
        On Error Resume Next
        For Each wrksheet In ActiveWorkbook.Worksheets
            'Change the password to whatever is required
            wrksheet.Unprotect Password:="Albuterol1"
            wrksheet.ShowAllData 'This works for filtered data not in a table
    
            For Each lstobj In wrksheet.ListObjects
                If lstobj.ShowAutoFilter Then
                    lstobj.Range.AutoFilter 'Clear filters from a table
                    lstobj.Range.AutoFilter 'Add the filters back to the table
                End If
    
            'Change the password to whatever is required
            wrksheet.Protect Password:="Albuterol1", _
                  DrawingObjects:=True, _
                  Contents:=True, _
                  Scenarios:=True, _
                  AllowFiltering:=True
            Next 'Check next worksheet in the workbook
        Next
    
        Application.ScreenUpdating = True
    End Sub
    

    I know this is a relatively old post and don't really like being a necromancer... But since I had the same issue and tried a few of the options in this thread without success I combined some of the answers to get a working macro..

    Hopefully this helps someone out there :)

    Sub ResetFilters()
        On Error Resume Next
        For Each wrksheet In ActiveWorkbook.Worksheets
            wrksheet.ShowAllData 'This works for filtered data not in a table
            For Each lstobj In wrksheet.ListObjects
                If lstobj.ShowAutoFilter Then
                    lstobj.Range.AutoFilter 'Clear filters from a table
                    lstobj.Range.AutoFilter 'Add the filters back to the table
                End If
            Next 'Check next worksheet in the workbook
        Next
    End Sub
    

提交回复
热议问题