DoEvents führt keine Events durch… Warum?

Ich benutzeDoEvents, um eine Aktualisierung einer Fortschrittsanzeige in der Statusleiste (oder in einer Zelle im Arbeitsblatt) zu erzwingen, wie im folgenden Beispielcode. Der Bildschirm wird jedoch nicht oder nicht mehr aktualisiert. Die Aufgabe ist abgeschlossen, aber der Fortschrittsbalken ist unbrauchbar.

Warum nichtDoEvents "Veranstaltungen machen"? Was kann ich noch tun, um eine Bildschirmaktualisierung zu erzwingen?

Bearbeiten: Ich verwende Excel 2003 unter Windows XP.

Dies ist eine Fortsetzung eines frühere Frage; Dank anRobert Mearns für seine Antwort und den folgenden Beispielcode.

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage