3

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

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
4

2 回答 2

1

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

ActiveSheet.Autofilter.Range.Autofilter

之后,您可以通过定义适当的范围来重置过滤器(未选择标准)

ActiveSheet.Range("A1:B1").Autofilter
于 2015-02-04T13:37:35.543 回答
1

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

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

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

于 2020-03-19T16:41:19.830 回答