vba Word - 由于计算,状态栏闪烁

问题描述

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