VBA性能问题 – 在执行任务之前检查

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

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

在第二张纸上,我需要检查是否在sortingfunction中标记了任何行,而此刻我在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很陌生,我想知道是否有更有效的方法来做到这一点。

如果你只是想删除自动filter,你可以使用:

 ActiveSheet.AutoFilterMode = False 

如果你想删除filter,并在你的函数运行后重新打开它,这是更复杂的。

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

 Application.ScreenUpdating = False 'do your stuff, like turn autofilter off 'and when you are done: Application.ScreenUpdating = True