ActiveSheet.AutoFilter.ApplyFilter是否必要?当工作表受到保护时,它会破坏我的代码,所以我可以安全地省略它吗?

时间:2017-07-07 15:09:05

标签: excel vba excel-vba

激活工作表后,我根据上一张工作表中的计算列应用了一个过滤器。

Range(Cells(1, 1), LastCell).AutoFilter Field:=Range("filter").Column, Criteria1:="TRUE"

ActiveSheet.AutoFilter.ApplyFilter

但第二行是否必要?没有它似乎工作正常,问题是如果页面受到保护,即使使用activesheet.protect userinterfaceonly :=true.applyfilter也会引发错误,而自动过滤器行本身并不是。

我不知道为什么会这样,但无论如何,在我看来最简单的解决办法是,如果不需要.applyfilter,则省略它。

1 个答案:

答案 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语句之后。所以删除它然后继续。