我的Excel工作簿中有一些性能问题。我有两个不同的工作表:
information
在第二张纸上,我需要检查排序函数中是否有任何行被标记,目前我在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非常陌生,我想知道是否有更有效的方法来做到这一点。
发布于 2012-05-09 01:54:30
如果只想删除自动筛选器,可以使用:
ActiveSheet.AutoFilterMode = False
如果要删除筛选器,并在函数运行后重新打开它们,则要复杂得多。
在与VBA的工作表交互时,请确保使用它使代码运行得更快:
Application.ScreenUpdating = False
'do your stuff, like turn autofilter off
'and when you are done:
Application.ScreenUpdating = True
https://stackoverflow.com/questions/10513308
复制