Ein Fortschrittsbalken hilft deinen BenutzerInnen dabei abzuschätzen, wie lange der aktuelle Makrodurchlauf noch dauert.
Um eine professionelle und benutzerfreundliche Anwendung zu gestalten, kannst du für Makros einen Fortschrittsbalken erstellen.
Ich zeige dir Schritt für Schritt, wie du dieses Tool in deiner Anwendung integrieren kannst.
Schritt 1: Erstelle eine Userform
Starte mit der Erstellung und dem Design einer UserForm (1), füge einen Rahmen (2) hinzu, in dem du dann den Fortschrittsbalken sowie eine Prozentangabe (3) integrierst.

Schritt 2: Fortschrittsbalken einfügen
Der Fortschrittsbalken (1) soll eine visuelle Darstellung der Prozentangabe sein und den BenutzerInnen auf einen Blick den aktuellen Stand veranschaulichen.

Schritt 3: Anfangszustand (1) des Fortschrittsblaken definieren und UserForm aufrufen.
Die Breite (Width) des Balkens soll die aktuelle Prozentangabe wiederspiegeln. Somit ist der Anfangszustand des Balkens:
Breite (Width) = 0
Die UserForm rufst du in deinem bestehenden Code auf und definierst, dass der nachfolgende Code trotzdem ausgeführt werden soll.
Das erreichst du mit:
UfFortschrittsbalken.Show 0
Die 0 am Ende gibt über das Argument Modal die Freigabe, den folgenden Code weiter auszuführen.

Schritt 4.1:Fortschrittsbalken aktualisieren an bestimmten Punkten
Eine einfache Möglichkeit den Fortschrittsbalken zu aktualisieren, ist im Code an bestimmten Punkten feste Zahlenwerte zu integrieren.
Vor allem wenn Makros mit mehreren Prozeduren und Unterprozeduren arbeiten, empfehle ich diese Option, da sie sehr rasch integriert werden kann.
Zum Beispiel in 25% Schritten:
Prozent = 25% (1) / 50% (2) / 75% (3) / 100% (4)
Balken Breite (Width) = Gesamtbreite x Prozentwert / 100

Schritt 4.2:Fortschrittsbalken aktualisieren per Unterprozedur
An die Unterprozedur übergibst du die Werte Anteil und Gesamt (1), anhand derer die Prozent sowie die Balkenbreite (Width) rechnerisch ermittelt wird (2).
Wichtig ist dabei, dass du die UserForm und das Makro parallel ausführst.
Dazu fügst du am Beginn der Unterprozedur den Code DoEvents (3) ein.

Sub FortschrittsbalkenUpdaten(Anteil As Long, Gesamt As Long)
'Updates zulassen
DoEvents
With UfFortschrittsbalken
'Breite des Balken festlegen
.Balken.Width = 282 * Anteil / Gesamt
'Prozentangabe
.Prozent.Caption = Round(Anteil / Gesamt * 100, 0) & "%"
End With
End Sub
Ich hoffe dieses Tutorial hilft dir dabei, deine Anwendung professioneller und benutzerfreundlicher zu gestalten!
Melde dich gerne für meinen Newsletter an und erhalte regelmäßig Tipps & Tricks rund um das Thema Excel VBA!