过滤数据的VBA检查表

时间:2013-07-09 05:55:34

标签: excel-vba vba excel

有没有办法检查工作表是否有任何过滤数据(如果有过滤数据,则清除过滤器,否则什么都不做)?我这里有这个代码,但我不知道如何编写第二部分:

Sub ProtectAll()

Dim wSheet          As Worksheet

For Each wSheet In Worksheets

With wSheet
If .AutoFilterMode Then
            .ShowAllData
            .Cells.Locked = True
            .Cells.FormulaHidden = False
           '.Range(wSheet.Cells(12, 1), wSheet.Cells(12, 18)).AutoFilter
           '.Protect Password:=Pwd, AllowFiltering:=True

ElseIf ??? Then
End If
End With

Next wSheet
End Sub

2 个答案:

答案 0 :(得分:1)

此代码从ActiveSheet中删除所有自动过滤器

ActiveSheet.Autofilter.Range.Autofilter

之后,您可以通过定义适当的范围重置过滤器(未选择任何条件)

ActiveSheet.Range("A1:B1").Autofilter

答案 1 :(得分:0)

我认为最好的方法是使用.FilterMode

If Sheets("NameSheet").FilterMode Then Sheets("NameSheet").ShowAllData

此代码删除工作表中已过滤的数据,并显示所有保留自动过滤器的数据。