VBA性能问题 - 执行任务前检查

时间:2012-05-09 09:28:09

标签: excel vba excel-vba

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

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

在第二张表格中,我需要检查排序功能中是否标记了任何行,目前我在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很新,我想知道是否有更有效的方法来做到这一点。

1 个答案:

答案 0 :(得分:2)

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

ActiveSheet.AutoFilterMode = False

如果你想删除过滤器并在你的功能运行后重新打开它,那就更复杂了。

与VBA中的工作表进行交互时,请务必使用此工具使代码运行得更快:

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