最近我一直在编写需要大量时间执行的宏。 (超过5分钟,但有些显着更长)。我发现在这种情况下(除等待之外)有用的一件事就是让Application.StatusBar告诉我它是移动还是挂起。
但是,很多时候,当程序继续前进时,Application.Statusbar会冻结某个值。怎么能纠正这个?反正我们可以阻止这个,这样只要程序移动,状态栏就会继续移动吗?提前谢谢。
答案 0 :(得分:1)
我发现当我在循环中有很多项目时冻结发生在我的代码中。我通过使用以下代码解决了这个问题:
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行更新一次状态栏。这有助于代码运行更快,并消除屏幕冻结