我的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很新,我想知道是否有更有效的方法来做到这一点。
答案 0 :(得分:2)
如果您只想删除自动过滤器,可以使用:
ActiveSheet.AutoFilterMode = False
如果你想删除过滤器并在你的功能运行后重新打开它,那就更复杂了。
与VBA中的工作表进行交互时,请务必使用此工具使代码运行得更快:
Application.ScreenUpdating = False
'do your stuff, like turn autofilter off
'and when you are done:
Application.ScreenUpdating = True