Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Statusanzeige während Makro läuft

Forumthread: Statusanzeige während Makro läuft

Statusanzeige während Makro läuft
28.02.2003 17:54:08
Ulli
Hallo,

ich hab folgendes Problem. Nachdem über eine Userform Daten eingegeben wurden und diese mit OK bestätigt wurden, wird ein Makro ausgeführt. Genau jetzt, also während das Makro läuft, soll ein Statustext (wird ausgeführt...) angezeigt werden, da das Makro doch eine Zeit lang läuft. Weil während der Berechnung verschiedene Tabellenblätter verwendet werden, soll die Bildschirmaktualisierung ausgeschaltet sein, um ein Flackern zu vermeiden.

Ich hab es damit versucht, zu Beginn des Makros eine neue Userform anzuzeigen, in der der entsprechende Text steht, dann die Bildschirmaktualisierung auszuschalten und dann die Userform wieder zu schließen. Erst wenn das Makro beendet ist, soll die Bilschirmaktualisierung wieder eingeschaltet werden, damit der Statustext wieder verschwindet. Das Problem ist aber, daß das Makro erst weiterläuft, nachdem die Userform manuell geschlossen wird, mittels Klick auf das Kreuz.

Gibt es eine Möglichkeit eine Meldung zu erzeugen, bei der das Makro im Hintergrund weiterläuft und die nach Beendigung wieder verschwindet bzw. kann man das überhaupt mit einer Userform oder Messagebox(ohne OK-Button) realisieren?

Bin dankbar für jede Hilfe.

Ulli

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Statusanzeige während Makro läuft
28.02.2003 17:57:20
Wolf-Dieter Roth

Hallo Ulli,

probier es mal mit
Application.DisplayStatusBar (notfalls Hilfe benutzen).

Gruß
Dieter

Re: Statusanzeige während Makro läuft
28.02.2003 17:58:58
Rolf Kersjes

Hallo Ulli,

geht mit

Application.StatusBar = "Zur Zeit wird das Makro ausgeführt"

am Ende nicht vergessen wieder zurückzusetzen mit

Application.StatusBar = False

Die Anzeige erscheint links unten. Da steht normalerweise "Bereit"

Rolf

Anzeige
Re: Statusanzeige während Makro läuft
28.02.2003 18:03:08
andre

hallo ulli,
nehme doch den progresbar1. zu finden in den steuerelementen - rechte maustaste - zusätzliche steuerelemente
Prozentzahl = Int((i / anz) * 100)
ProgressBar1.Value = Prozentzahl
wenn in deinem makro eine schleife läuft, dann passt das da rein. siehe auch in der recherche zu fortschrittsbalken.
anz ist die gesamtzahl, i der schleifenzähler

gruss andre

Anzeige
Re: Statusanzeige während Makro läuft
28.02.2003 18:03:11
andre

hallo ulli,
nehme doch den progresbar1. zu finden in den steuerelementen - rechte maustaste - zusätzliche steuerelemente
Prozentzahl = Int((i / anz) * 100)
ProgressBar1.Value = Prozentzahl
wenn in deinem makro eine schleife läuft, dann passt das da rein. siehe auch in der recherche zu fortschrittsbalken.
anz ist die gesamtzahl, i der schleifenzähler

gruss andre

Anzeige
Re: Statusanzeige während Makro läuft
28.02.2003 19:27:40
Ulli

Danke, das funktioniert. Auch an Dieter, damit klappts auch dann, wenn die Statusleiste deaktiviert ist.

Den Fortschrittsbalken kann ich nicht verwenden, denn die Bildschirmaktualisierung wird zu Beginn des Makros FALSE gesetzt

Ulli

;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Statusanzeige während eines Makros in Excel


Schritt-für-Schritt-Anleitung

Um während der Ausführung eines Makros eine Statusanzeige in Excel zu implementieren, kannst du folgende Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11, um den VBA-Editor zu starten.
  2. Füge ein neues Modul hinzu:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Schreibe dein Makro:

    • Füge den folgenden Code in das Modul ein, um eine Statusanzeige in der Statusleiste anzuzeigen:
    Sub MeinMakro()
       Application.StatusBar = "Zur Zeit wird das Makro ausgeführt"
       Application.ScreenUpdating = False
    
       ' Hier kommt der Hauptcode deines Makros
       Dim i As Integer
       For i = 1 To 100
           ' Simuliere eine Verarbeitung
           DoEvents ' Erlaubt Excel, auf Benutzeraktionen zu reagieren
       Next i
    
       Application.StatusBar = False
       Application.ScreenUpdating = True
    End Sub
  4. Starte dein Makro:

    • Führe das Makro aus, um die Statusanzeige zu testen.

Häufige Fehler und Lösungen

  • Fehler: Statusanzeige bleibt stehen oder wird nicht aktualisiert
    Lösung: Stelle sicher, dass du DoEvents innerhalb der Schleife verwendest. Dies ermöglicht Excel, weiterhin auf Benutzeraktionen zu reagieren und die Statusleiste zu aktualisieren.

  • Fehler: Makro stoppt bei der Userform
    Lösung: Vermeide die Verwendung von UserForms, die manuell geschlossen werden müssen. Stattdessen nutze die Statusleiste oder eine ProgressBar.


Alternative Methoden

Eine weitere Möglichkeit, eine Statusanzeige während der Makroausführung zu implementieren, ist die Verwendung einer ProgressBar:

  1. ProgressBar hinzufügen:

    • Gehe zu Entwicklertools > Einfügen und wähle ActiveX-Steuerelemente.
    • Füge eine ProgressBar (ProgressBar1) zu deinem Arbeitsblatt hinzu.
  2. Code für die ProgressBar:

    • Ergänze den Code wie folgt:
    Sub MeinMakroMitProgressBar()
       Dim i As Integer
       Dim anz As Integer
       anz = 100 ' Gesamtanzahl der Schritte
    
       ProgressBar1.Visible = True
       For i = 1 To anz
           ProgressBar1.Value = Int((i / anz) * 100)
           ' Simuliere eine Verarbeitung
           DoEvents
       Next i
       ProgressBar1.Visible = False
    End Sub

Praktische Beispiele

  • Ein einfaches Makro, das Daten verarbeitet und die Statusleiste aktualisiert:
Sub DatenVerarbeiten()
    Application.StatusBar = "Daten werden verarbeitet..."
    Application.ScreenUpdating = False

    ' Datenverarbeitungscode hier einfügen

    Application.StatusBar = False
    Application.ScreenUpdating = True
End Sub
  • Ein Beispiel mit einer ProgressBar:
Sub DatenVerarbeitenMitProgressBar()
    Dim i As Integer
    Dim anz As Integer
    anz = 100

    ProgressBar1.Visible = True
    For i = 1 To anz
        ProgressBar1.Value = Int((i / anz) * 100)
        ' Datenverarbeitungscode hier einfügen
        DoEvents
    Next i
    ProgressBar1.Visible = False
End Sub

Tipps für Profis

  • Nutze DoEvents: Dies verbessert die Reaktionsfähigkeit von Excel während der Ausführung des Makros.
  • Vermeide Bildschirmaktualisierung: Setze Application.ScreenUpdating = False, um Flackern zu vermeiden und die Performance zu erhöhen.
  • Testen in verschiedenen Excel-Versionen: Stelle sicher, dass dein Makro in der Version funktioniert, die du verwendest.

FAQ: Häufige Fragen

1. Wie kann ich die Statusleiste wieder zurücksetzen?
Am Ende deines Makros setze die Statusleiste mit Application.StatusBar = False zurück.

2. Kann ich eine Userform für die Statusanzeige verwenden?
Es wird empfohlen, UserForms zu vermeiden, da sie manuell geschlossen werden müssen. Nutze stattdessen die Statusleiste oder eine ProgressBar.

3. Wie kann ich sicherstellen, dass der Fortschritt korrekt angezeigt wird?
Nutze Int((i / anz) * 100) zur Berechnung des Fortschritts während der Schleife.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige