1

我的 Excel 工作簿中有一些性能问题。我有 2 个不同的工作表:

  • 第一张表有很多信息
  • 第二张表只显示有用的东西(对于不每天使用它的人)。

在第二张纸上,我需要检查排序函数中是否标记了任何行,目前我在 VBA 中这样做:

ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=1
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=2
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=3
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=4
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=5
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=6
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=7
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=8
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=9
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=10
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=11
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=12
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=13
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=14
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=15
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=16
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=17
ActiveSheet.Range("$A$12:$R$132").AutoFilter Field:=18

与我正在执行的任务相比,这需要太多时间。我对 VBA 很陌生,我想知道是否有更有效的方法来做到这一点。

4

1 回答 1

2

如果您只想删除自动过滤器,可以使用:

ActiveSheet.AutoFilterMode = False

如果您想在函数运行后移除过滤器并重新打开,那就更复杂了。

当与 VBA 中的工作表交互时,请确保使用它来使您的代码运行得更快:

Application.ScreenUpdating = False
'do your stuff, like turn autofilter off
'and when you are done:
Application.ScreenUpdating = True
于 2012-05-09T09:54:30.367 回答