vba Word - 状态栏因计算而闪烁
vba Word - statusbar is flickering due to calculations
我想在 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% 的时间范围内重新绘制状态栏。
我想在 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% 的时间范围内重新绘制状态栏。