最近,我一直在编写需要大量时间才能执行的宏。 (最多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/