激活工作表后,我根据上一张工作表中的计算列应用了一个过滤器。
Range(Cells(1, 1), LastCell).AutoFilter Field:=Range("filter").Column, Criteria1:="TRUE"
ActiveSheet.AutoFilter.ApplyFilter
但第二行是否必要?没有它似乎工作正常,问题是如果页面受到保护,即使使用activesheet.protect userinterfaceonly :=true
,.applyfilter
也会引发错误,而自动过滤器行本身并不是。
我不知道为什么会这样,但无论如何,在我看来最简单的解决办法是,如果不需要.applyfilter
,则省略它。
答案 0 :(得分:0)
很少需要。只有当您应用了一些AutoFilter
时,才会调用Sheet1.ShowAllData
,这会使过滤器保持活跃状态"但显示所有行。所以,如果你这样做,你想要重新申请"在活动过滤器中,您可以调用Sheet.AutoFilter.ApplyFilter
。
Sub Example()
Sheet1.Range("A1:D20").AutoFilter 3, "x"
Sheet1.ShowAllData '<------ keeps filter alive but shows all data
Sheet1.AutoFilter.ApplyFilter '<------ applies "again" the same filter
End Sub
如果您从未在代码中使用ShowAllData
,那么我保证ApplyFilter
无用。在您的代码中,它显然没有任何效果,因为您只需将其放在AutoFilter
语句之后。所以删除它然后继续。