最近,我一直在编写需要大量时间才能执行的宏。 (最多5分钟,但有些时间更长)。我发现在这种情况下(而不是等待)有用的一件事是让Application.StatusBar告诉我它是移动还是挂起。

但是,很多时候,在程序前进时,Application.Statusbar被冻结为某个值。如何纠正?无论如何,我们可以防止这种情况的发生,以便只要程序在运行,状态栏就一直在运行?提前致谢。

最佳答案

我发现当循环中有很多项时冻结发生在我的代码上。我通过使用以下代码解决了这个问题:

For RowNum = 1 To TotalRows
  For ColNum = 1 To TotalCols
    'code
      If ColNum = 1 Then
        If RowNum Mod 50 = 0 And ColNum = 1 Then
          Application.StatusBar = Format(RowNum / TotalRows, "0%")& " Completed."
        End If
      Else: Exit For
      End If
  Next ColNum
Next RowNum


循环每50行更新一次状态栏。这有助于代码更快地运行,并消除了屏幕冻结

关于excel - Application.StatusBar在VBA中卡住,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22605622/

10-16 09:22