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% 的时间范围内重新绘制状态栏。