DoEvents не выполняет события… Почему?

I ' m с помощью DoEvents для принудительного обновления индикатора выполнения в строке состояния (или в какой-либо ячейке листа), как в примере кода ниже. Но экран не обновляется или перестает обновляться в какой-то момент. В конечном итоге задача завершается, но индикатор выполнения бесполезен.

Почему DoEvents не выполняет «события»? Что еще я могу сделать для принудительного обновления экрана?

Изменить: я использую Excel 2003 в Windows XP.

Это продолжение предыдущего вопроса ; спасибо Роберту Мирнсу за его ответ и приведенный ниже пример кода.

Sub ProgressMeter()

Dim booStatusBarState As Boolean
Dim iMax As Integer
Dim i As Integer

iMax = 100

    Application.ScreenUpdating = False
''//Turn off screen updating

    booStatusBarState = Application.DisplayStatusBar
''//Get the statusbar display setting

    Application.DisplayStatusBar = True
''//Make sure that the statusbar is visible

    For i = 1 To iMax ''// imax is usually 30 or so
        fractionDone = CDbl(i) / CDbl(iMax)
        Application.StatusBar = Format(fractionDone, "0%") & " done..."
        ''// or, alternatively:
        ''// statusRange.value = Format(fractionDone, "0%") & " done..."

        ''// Some code.......

        DoEvents
        ''//Yield Control

    Next i

    Application.DisplayStatusBar = booStatusBarState
''//Reset Status bar display setting

    Application.StatusBar = False
''//Return control of the Status bar to Excel

    Application.ScreenUpdating = True
''//Turn on screen updating

End Sub

6
задан Community 9 July 2018 в 19:34
поделиться