Fortschrittsanzeige

pglw

Erfahrenes Mitglied
Hi zusammen,

ich habe mir ein Makro gebaut, das eine Excel-Tabelle füllt und für die Berechnung eine ganze Weile braucht.

Zur Zeit benutze ich das ActiveX-Steuereelement Progress Bar auf einem kleinen Formular.
Folgender Code steht dahinter:

Private Sub UserForm_Activate()
Dim n%, tm!, ctm!

While n < 100
tm = Timer + 0.02
While ctm < tm
ctm = Timer
DoEvents
Wend
n = n + 1
pbtest.Value = n

Wend

Me.Hide
End Sub

Das Formular mit der Fortschrittsanzeige darauf lasse ich einblenden, sobald das eigentliche Makro gestartet wird. Das Blöde ist jetzt nur, daß es eigentlich gar keine Fortschrittsanzeige ist, denn die ProgressBar läuft runter, wie oben im Timer eingestellt, aber völlig unabhängig davon wie lange das Makro zur Berechnung braucht.

Wie könnte man die Fortschrittsanzeige während der ganzen Berechnungszeit einblenden lassen und den wirklichen Fortschritt der Berechnung anzeigen lassen?

Grüsse
pglw
 
Du musst die Fortschrittsanzeige natürlich von deinem eigentlichen Makro aus steuern. Wenn du dort eine Schleife hast, welche die meiste Zeit in Anspruch nimmt, dann musst du die Fortschrittsanzeige beispielsweise nach jedem Schleifendurchlauf um einen bestimmten Wert erhöhen.
 
Und damit das ganze dann auch aktualisiert angezeigt wird musste direkt danach noch ein "DoEvents" reinsetzen
 
Die ProgressBar macht automatisch ein Refresh, wenn ihr Fortschrittsanzeige-Wert geändert wird. D.h. die ProgressBar müsste theoretisch immer aktualisiert auf dem Bildschirm sichtbar sein. Ein DoEvents ist aber sicherlich empfehlenswert, damit auch der Rest des Programms noch reagiert.
 
Ich hab glaub ich auch mal gelesen, dass das DoEvents bei einer Version von VB gebraucht wird und in der anderen wieder nicht.... Ich machs auf jeden Fall immer hin. So viel Zeit braucht das jetzt auch nicht:)
 
Zurück