问题描述
我想在 Word 中的长时间计算期间使用状态栏来更新信息。但是,在计算过程中,状态栏会闪烁并切换回“正常”状态栏。
示例:
Sub main()
Dim i As Integer
Dim j As Long
Dim dummy As Double
For i = 1 To 100
Application.StatusBar = "Please be patient... i=" & i
' waiting loop: Flickering due to calculations
For j = 1 To 90000
dummy = Sqr(j) ^ 3
dummy = Sqr(dummy)
Next
' just waiting: (almost) No flickering
'CreateObject("Excel.Application").Wait (Now + TimeValue("00:00:01"))
Next
Application.StatusBar = False
End Sub
如果您使用推荐的 CreateObject... 更改 等待循环,闪烁几乎消失了。我也试过 Application.ScreenUpdating 但它不起作用。
如何在计算过程中停止闪烁?
解决方法
状态栏闪烁是因为您已将其更新包含在循环中。实际上,它会在每次迭代时重新绘制自己。
将其移出循环,然后显然不要包含变量“i”。
另一种解决方法是在循环中放置一个条件来检查计数器,并且仅在完成 25%、完成 50% 和完成 75% 的时间范围内重新绘制状态栏。