1

我不明白为什么这需要这么长时间才能完成,奇怪的是它在执行“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 行数据的,所以我认为这并不过分!

谢谢!


问题在于应用于大多数单元格的条件格式。我很惊讶拥有自动过滤器和条件格式是一个如此大的问题。

非常感谢您的所有帮助!我的头现在感觉好多了......

4

1 回答 1

0

我更喜欢使用ActiveSheet.AutoFilterMode = False,我很想看看这是否能改善事情。

增加的性能潜力:

  1. 如果有机会奉承你的公式是理想的,因为你有这么多。

  2. 如果这些是必需的,但您可以根据要求进行更新,比如时间更新时,那么我学到的一个技巧是将第一行保留为公式,但将其余行展平,当数据更新时,然后将这些公式复制下来,更新值然后重新展平除第一行之外的所有内容。

  3. 上述方法的替代方法是创建一个更新这些值的过程,并在需要时运行此程序,并且根本没有公式。

发布条件格式问题:

  1. 作为一种改进条件格式的方法,一旦通过 VBA 更新数据,您可以让工作表更改单元格格式。这将减少每次过滤时执行此操作的 excel。

  2. 另外,由于您的情况,我最喜欢Sat 2-Mar-13的可能是让您的日期显示当天,例如。这仍然可以快速检查周末并提高性能。

于 2013-04-04T11:03:08.407 回答