DoEvents no hace los eventos ... ¿Por qué?

Estoy usandoDoEvents para forzar una actualización de un indicador de progreso en la barra de estado (o en alguna celda de la hoja) como en el código de ejemplo a continuación. Pero la pantalla no se actualiza o deja de actualizarse en algún momento. La tarea finalmente se completa pero la barra de progreso es inútil.

¿Por qué no lo hará?DoEvents "hacer los eventos"? ¿Qué más puedo hacer para forzar una actualización de pantalla?

Editar: estoy usando Excel 2003 en Windows XP.

Este es un seguimiento de unpregunta anterior; gracias aRobert Mearns por su respuesta y el código de muestra a continuación.

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta