DoEvents não realiza os eventos ... Por quê?
estou a usarDoEvents
para forçar uma atualização de um indicador de progresso na barra de status (ou em alguma célula da planilha) como no código de exemplo abaixo. Mas a tela não é atualizada ou para de ser atualizada em algum momento. A tarefa finalmente termina, mas a barra de progresso é inútil.
Por que nãoDoEvents
"fazer os eventos"? O que mais posso fazer para forçar uma atualização de tela?
Edit: Estou usando o Excel 2003 no Windows XP.
Este é um acompanhamento de umpergunta anterior; graças aRobert Mearns para sua resposta e o código de exemplo abaixo.
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