我不明白为什么这需要花费很长时间才能完成,奇怪的是,执行“ActiveSheet.ShowAllData”需要最多的时间。任何人都可以提出什么可以改善它?使用VBA清除表单上的所有过滤器时极其缓慢
Sub ClearAllFilters()
Application.Calculation = xlManual
Application.ScreenUpdating = False
If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
For Each OleObj In ActiveSheet.OLEObjects
If OleObj.progID = "Forms.CheckBox.1" Then
OleObj.Object = False
End If
Next
Sheets("Manhour Summary Current Month").TextBox1.Text = ""
Sheets("Manhour Summary Current Month").TextBox2.Text = ""
Sheets("Manhour Summary Current Month").TextBox3.Text = ""
ActiveSheet.Range("$A$6:$H$1307").AutoFilter Field:=8, Criteria1:="<>0"
End If
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
End Sub
基本上我清除所有自动过滤器,清除复选框并清除三个文本框。 这是〜1000行的数据,所以没有什么太多,我会想!
谢谢!
问题在于条件格式应用于大多数单元格。我很惊讶地发现自动过滤器和条件格式是个问题。
海量感谢您的帮助!我的头现在感觉好多了......
因为您在这里做4(3)不同的事情debug.print每个操作的时间戳,并告诉我们哪一个需要最多的时间来执行。 – 2013-04-04 09:52:55
或On Error Resume Next ActiveSheet.ShowAllData On Error转到0 – 2013-04-04 09:58:00
或者删除过滤器并重新放回来,看看需要多少时间... – 2013-04-04 11:02:21