我不明白为什么要花这么长时间才能完成,奇怪的是它花了很多时间来执行“ActiveSheet.ShowAllData”。任何人都可以提出可以改善它的建议吗?
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行的数据,所以我没想过会这么多!
谢谢!
问题在于应用于大多数单元格的条件格式。我很惊讶自动过滤器和条件格式化是一个很大的问题。
非常感谢你的帮助!我的脑袋现在感觉好多了....
答案 0 :(得分:0)
我更喜欢使用ActiveSheet.AutoFilterMode = False
,我很想知道这是否有所改善。
增加了表现潜力:
如果有机会,你的公式是理想的,因为你有这么多。
如果这些是必需的,但您可以根据要求更新,比如说更新时间,那么我学到的一个技巧是将第一行保留为公式,但将其余部分展平,并在更新数据时再复制这些公式向下,更新值,然后再次展平除第一行以外的所有行。
上述方法的替代方法是创建一个更新这些值的过程,并在需要时运行并且根本没有公式。
发布条件格式问题:
作为一种由于条件格式化而改进的方法,您可以让表格在通过VBA更新数据后更改单元格格式。每次过滤时,这都会减少excel。
根据您的情况,也可能我最喜欢的是让您的日期显示当天,例如Sat 2-Mar-13
。这仍然可以快速检查周末并提高性能。