Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Status "Balken" während VBA läuft

Status "Balken" während VBA läuft
18.12.2007 17:52:00
Tobias
Hallo,
ich habe ein VBA welches teilweise sehr lange läuft. Damit niemand auf die Idee kommt Excel ist tot, fände ich es eine gute Idee irgendetwas in der Art eines Status-Balkens einzublenden, solange das VBA arbeitet. Optimal wäre natürlich noch die %-Angabe wie weit der ganze Ablauf ist, muss aber nicht sein.
Wäre schön wenn jemand weiß wie das geht.
Danke und Gruß
Tobias

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Status "Balken" während VBA läuft
18.12.2007 17:55:00
Peter
Hallo Tobias,
es gibt doch die StatusBar unten auf den Tabellenblättern.
mit Application.StatusBar = "Das Makro läuft - einen Moment Geduld bitte." ' bzw. dein Text
und am Ende mit Application.StatusBar = False
kannst du dort eine Nachricht an den Benutzer schicken.
Gruß Peter

Anzeige
AW: Fortschrittsbalken - im Archiv...
18.12.2007 20:00:11
Erich
Hallo Tobias,
such doch mal hier im Archiv nach
fortschrittsbalken
Da findest du viele, viele Beiträge zum Thema, höchstwahrscheinlich ist auch etwas für dich dabei.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Status "Balken" während VBA läuft
18.12.2007 21:40:00
P@ulchen
Hallo Tobias,
eine Beispielmappe findest Du hier: Fortschrittsanzeige
Gruß aus Leipzig
P@ulchen
www.excel-werkstatt.de

Anzeige
AW: Status "Balken" während VBA läuft
19.12.2007 11:53:09
Daniel
Hi
trotz Archiv hier nochmal zwei einfache Beispiele, wie man einfach einen Fortschrittsbalken mit Prozent-Anzeige realisieren kann.
die Prozentanzeige funktioniert natürlich nur in For-Next-Schleifen, deren Anfang und Ende bekannt ist.
das 2. Makro ist für den Fall, wenn dein Makro aus vielen einzelschritten besteht.
dann kann es auch Sinnvoll sein, in bestimmten Abständen den anwender zu informieren,daß sich was tut.

Sub Fortschritt1()
Dim i As Long
Dim Zeit As Double
For i = 1 To 100
Application.StatusBar = "Bearbeitet " & Format(i / 100, "0%") & " " & WorksheetFunction. _
Rept("X", 20 * i / 100)
Zeit = Timer + 0.1
Do Until Timer > Zeit
Loop
Next
Application.StatusBar = False
End Sub



Sub Fortschritt2()
Dim X As String
Dim SBar As String
X = "X"
SBar = SBar & X
Application.StatusBar = "Teilschritt 1 " & SBar
MsgBox "weiter"
SBar = SBar & X
Application.StatusBar = "Teilschritt 2 " & SBar
MsgBox "weiter"
SBar = SBar & X
Application.StatusBar = "Teilschritt 3 " & SBar
MsgBox "weiter"
SBar = SBar & X
Application.StatusBar = "Teilschritt 4 " & SBar
MsgBox "weiter"
Application.StatusBar = False
End Sub


Leider kennt die Statusleiste nur die Schriftart Tahoma, dh. du musst ein bissen in den Sonderzeichen dieser Schriftart suchen, falls du ein schöneres Zeichen als das X haben willst.
kleiner Tipp, die Unicode-Zeichen (code > 255) bekommst du mit ChrW(1234)
Gruß, Daniel

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Fortschrittsanzeige in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor in Excel, indem Du ALT + F11 drückst.

  2. Erstelle ein neues Modul:

    • Rechtsklick auf eine der Projektgruppen im Projektfenster.
    • Wähle "Einfügen" > "Modul".
  3. Füge den folgenden Code ein, um die Statusleiste während der Ausführung eines Makros zu nutzen:

    Sub BeispielMakro()
       Dim i As Long
       For i = 1 To 100
           Application.StatusBar = "Bearbeitet " & Format(i / 100, "0%")
           ' Simuliere eine Bearbeitungszeit
           Application.Wait (Now + TimeValue("0:00:01"))
       Next i
       Application.StatusBar = False ' Setze die Statusleiste zurück
    End Sub
  4. Starte das Makro direkt aus dem VBA-Editor oder über Excel.


Häufige Fehler und Lösungen

  • Fehler: Statusleiste bleibt aktiv
    Lösung: Stelle sicher, dass Du am Ende Deines Makros Application.StatusBar = False verwendest, um die Anzeige zurückzusetzen.

  • Fehler: Keine Fortschrittsanzeige sichtbar
    Lösung: Überprüfe, ob das Makro in einer Schleife korrekt implementiert ist, und dass die Statusleiste regelmäßig aktualisiert wird.


Alternative Methoden

  • MSGBOX für Fortschrittsupdates:
    Du kannst auch MsgBox verwenden, um den Benutzer über den Fortschritt zu informieren, allerdings wird dies die Ausführung des Makros unterbrechen.

    MsgBox "Fortschritt: " & i & " von 100"
  • Fortschrittsbalken in Zellen:
    Eine andere Möglichkeit ist, den Fortschritt direkt in einer Zelle anzuzeigen, indem Du den Wert in einer Zelle aktualisierst:

    Cells(1, 1).Value = "Fortschritt: " & Format(i / 100, "0%")

Praktische Beispiele

Hier sind zwei einfache Beispiele, die Du verwenden kannst:

Beispiel 1: Fortschritt mit Prozentanzeige

Sub Fortschritt1()
    Dim i As Long
    For i = 1 To 100
        Application.StatusBar = "Bearbeitet " & Format(i / 100, "0%")
        Application.Wait (Now + TimeValue("0:00:01")) ' Simuliere eine Bearbeitungszeit
    Next i
    Application.StatusBar = False
End Sub

Beispiel 2: Mehrere Teilschritte mit Statusanzeigen

Sub Fortschritt2()
    Dim SBar As String
    SBar = ""
    For i = 1 To 4
        SBar = SBar & "X"
        Application.StatusBar = "Teilschritt " & i & ": " & SBar
        MsgBox "Teilschritt " & i & " abgeschlossen."
    Next i
    Application.StatusBar = False
End Sub

Tipps für Profis

  • Verwende Unicode-Zeichen: Du kannst schöneren Text in der Statusleiste anzeigen, indem Du Unicode-Zeichen verwendest. Beispiel:

    Application.StatusBar = "Bearbeitung " & ChrW(10003) ' Verwendung eines Häkchenzeichens
  • Statusleiste anpassen: Experimentiere mit verschiedenen Textlängen und Zeichen, um die Statusleiste ansprechender zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die Statusleiste am Ende eines Makros zurücksetzen?
Verwende Application.StatusBar = False am Ende Deines Makros, um die Statusleiste zurückzusetzen.

2. Kann die Statusleiste auch mit Prozentsätzen arbeiten?
Ja, Du kannst die Fortschrittsanzeige in Prozent implementieren, indem Du den aktuellen Fortschritt im Verhältnis zur Gesamtanzahl anzeigst, wie im Beispiel oben.

3. Funktioniert dies in allen Excel-Versionen?
Ja, die Verwendung der Statusleiste ist in den meisten modernen Excel-Versionen über VBA möglich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige