Fortschrittsleiste (progress bar)

Hallo!
Es klemmt mal wieder…
Excel 97 VBA bietet unter den Steuerelementen eine progress bar
(ActiveX Steuerelement ProgressBar V. 6.0) Wie funktioniert das Ding? Min und Max sind als Eigenschaften angegeben, aber wie sag ich ihm wieweit der Vorgang abgearbeitet ist? In welcher Eigenschaft steht das drin? Wie erfolgt die Aktualisierung?
Fragen über Fragen :wink:

vielen Dank,
Stefan

Hallo Stefan,

das ist im Grunde recht einfach. Angenommen, Du kopierst mit Deinem Programm irgendwelche Datensätze. Du weisst, daß Du z. B. 2000 Datensätze hast. Also setzt Du Min=0 und Max=2000. Nun setzt Du bei jedem (oder nur bei jedem 100sten) Kopiervorgang den Progressbar1.Value um 1 höher. Und das war´s auch schon.

Wenn Du aber einen Programmablauf verfolgen möchtest, teilst Du diesen am besten in Schritte auf z. B. Datei öffnen, prüfen, irgendwas machen, sortieren, speichern, schließen. Hier hättest Du sechs Schritte. Also wieder das Gleiche: Min=0 und Max=6. Bei jedem Schritt setzt Du Progressbar1.Value um 1 rauf. Vorteilhaft ist in dem Fall aber, wenn der aktuelle Schritt in einer Textbox kurz gezeigt wird, damit der „Zuschauer“ nicht unruhig wird, wenn ein Schritt mal länger dauert (weil sich ja dann der Balken nicht bewegt!)

Sinnvoll ist oftmals auch, den Max-Wert um 1 höher (hier also 7) anzusetzen als benötigt. Erst wenn alle 6 Schritte erfolgreich abgearbeitet wurden, setzt Du .Value auf 7

Kommst Du damit klar?

Gruß
(Woly)

Danke!
ich werd’s mal versuchen

Stefan

Hallo Woly, bin damit klar gekommen. Ist es jetzt immer notwendig, die Userform mit Repaint neu zu malen?
Ich habe die progressbar in eine Schleife, die ziemlich dicke Berechnungen im Worksheet veranlasst, eingebaut…
vielen Dank,
Stefan

keine Refresh´s nötig
Hallo Stefan,

soweit ich weiß, kommt die Progressbar ohne irgendwelche Refresh´s aus…!

Gruß
(Woly)

Hallo Woly,

soweit ich weiß, kommt die Progressbar ohne irgendwelche
Refresh´s aus…!

aber wenn ich den Fortschritt in %
in einem label anzeigen will, brauche ich repaint.
Oder ist das irgendwo auch mit der progressbar möglich?
Stefan

Nochmal: Für die ProgressBar brauchst Du keine Refresh´s. Die ProgressBar ist ausschließlich für die grafische Anzeige des Fortschritts mittels Balken gedacht.

Das Label dagegen ist ja eigentlich nicht für wechselnde Anzeigen gedacht; daher braucht es gelegentlich ein Refresh oder Repaint.

Wenn Du neben der ProgressBar auch noch die %-Zahl anzeigen willst, musst Du das separat programmieren.

Gruß
(Woly)