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

Meldung wenn makro fertig ist

Forumthread: Meldung wenn makro fertig ist

Meldung wenn makro fertig ist
19.08.2015 15:27:25
Thomas
Hallo excelfreunde,
ich starte in einer UF die abfolge bestimmter Makros. Ich möchte gern
während der Laufzeit die meldung "Makro läuft, bitte warten...." erhalten.
mit mein untenstehenden Versuch klappt es leider nicht. Hat jemand eine andere Idee?
liebe grüsse thomas
Private Sub CommandButton1_Click()
Application.StatusBar = "Makro läuft, bitte warten...."
Sheets("Filtereinstellungen").Range("B18").Value = CDate(TextBox1.Text)
Sheets("Filtereinstellungen").Range("B19").Value = CDate(TextBox2.Text)
Call Daten_holen
Call Tabelle_ordnen_Modul
Call leerzeilen_loeschen
Unload Me
Application.StatusBar = "fertig"
End Sub

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Meldung wenn makro fertig ist
19.08.2015 15:41:35
Matthias
Hallo Thomas,
normal sollte es so funktionieren. Selbst mit ScreenUpdating ausgestellt, wird die Statusleiste in meinem kurzen Test aktualisiert während die Userform andere Dinge erledigt.
Ansonsten mal DoEvents probieren, hilft wenn die Statusleiste einfriert bei längeren Makros. Da dein Befehl an zweiter Stelle steht sollte das aber eigentlich nicht notwendig sein.
lg Matthias

Anzeige
AW: Meldung wenn makro fertig ist
19.08.2015 16:51:35
Thomas
hallo Matthias,
ich bekomme es leider nicht hin,
kannst du mir mal dein kleinen selbsttest schicken? Dann könnte ich es mal mit meiner UF vergleichen. Und nachbauen.
Was meinst Du mit mal DoEvents.
vielen dank erst mal noch für dein interesse.
liebe grüsse thomas

Anzeige
AW: Meldung wenn makro fertig ist
19.08.2015 17:04:23
Matthias
Hallo Thomas,
Du hast bestimmt schon festgestellt, dass während das Makro läuft du keine anderen Sachen in Excel machen kannst.
"DoEvents" ist ein Befehl mit dem der PC zunächst alle anderen anstehen Aufgaben erledigt (z.B Klick auf einen weiteren Schalter, Tastenanschläge, etc.) bevor er mit der nächsten Zeile des Makros weitermacht. Für die genaue Definition frag aber lieber mal Google. DoEvents ist in dem Fall in die nächste Zeile nach "Application.Statusbar = ..." einzufügen.
Mein kleiner Selbstest bestand einfach nur aus einer Userform mit einem Schalter und folgendem Code:

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.StatusBar = "Läuft"
'DoEvents
Application.Wait Now + TimeValue("00:00:05")
Application.StatusBar = "Bereit"
Application.ScreenUpdating = True
End Sub

Also vergleichbar mit deinem. Was dazwischen steht ist ja irrelevant, da der Befehl StatusBar zuerst ausgeführt wird.
lg Matthias

Anzeige
AW: Meldung wenn makro fertig ist
19.08.2015 22:16:42
Thomas
Hallo Matthias,
es funktioniert jetzt. ich musste dies Application.StatusBar = "Läuft" vor jedes call ...
schreiben und nun zeigt er es an.
vielen dank für die Tipps.
und sorry das ich erst jetzt schreibe ich hatte ein internet problem.
hab vielen dank für die hilfe.
liebe grüsse thomas

Anzeige
AW: Meldung wenn makro fertig ist
19.08.2015 17:04:45
Daniel
Hi
wenn bei einer Userform mache ist das so:
1. ich erstelle auf der Userform eine Mulitpage mit zwei Seiten und blende die Reiter aus (dann kann der Anwender nicht umschalten, sondern nur ich per Code)
auf der ersten Seite liegen die Steuerelemente, auf der zweiten Seite der Hinweistext "bitte warten" und wenn möglich auch ein Progressbar-Steuerelement
2. bevor die eigentlichen zeitauswendigen Makros loslaufen, wechsle ich dann auf die Multipageseite mit dem Hinweistext (Multipage1.Value = 1) und wenn die Makros durchgelaufen sind wieder zurück
ggf richte ich auch noch eine dritte Seite ein, auf welcher dann die Fertigmeldung steht.
(insbesondere dann, wenns so Infos benötigt werden wie "123456 Zeilen bearbeitet, davon 123 fehlerhaft".)
wenn man keine Userform hat, kann man sich auch ein zusätzlichen Tabellenblatt anlegen, in welchen dann in grossen freundlichen Buchstaben das "bitte Warten" steht und das gleiche Spiel mit dem Blatt betreiben.
Gruß Daniel

Anzeige
AW: Meldung wenn makro fertig ist
19.08.2015 23:40:05
Thomas
Hallo Daniel,
erstmal vielen dank für das interesse. ich habe mal versucht von deinen ideen etwas umzusetzten,
nun ja siehe status VBA. Aber ich würde mir dies gern anschauen.
ich habe schon mal ein beispiel vorbereitet. kannst du mal ein beispiel einbauen?
! das test macro läuft auf mein PC ca. 120
sekunden. Man kann es aber mit esc beenden ( es werden nur leere zellen gelöscht)
https://www.herber.de/bbs/user/99691.xlsm
liebe grüsse thomas

Anzeige
AW: Meldung wenn makro fertig ist
20.08.2015 00:09:04
Daniel
Hi
was soll ich einbauen
lerne erstmal, wie man zeilen schnell und effektiv löscht.
bei Excel-gut solltest du die Funktion "Duplikate entfernen" kennen und diese zum löschen von Zeilen verwenden.
hierzu kennzeichnest du die Zeilen, die gelöscht werden sollen in einer Hilfsspalte mit einer Formel mit dem WErt 0 und die Zeilen die stehen bleiben sollen, mit der aktuellen Zeilennummer.
dann wendest du die Funktion DATEN - DATENTTOOLS - DUPLIKATE ENTFERNEN an, mit der Hilsfspalte als kriterium.
Gruss Daniel

Anzeige
ups kleines missverständnis
20.08.2015 03:32:22
Thomas
Hallo Daniel,
ich glaub du hast etwas falsch verstanden. Dies ist doch nur ein Test Macro es sollte eine längere Laufzeit haben um die Statusleiste (bzw. Progressbar-Steuerelement) während der arbeit des makros zu testen.Damit hatte ich genug zeit um test durchzuführen ohne meine Hauptdatei zu zerstören.
Und ich habe auch nicht gesagt das Du es einbauen sollst. Es war eine frage ob du mir mal deine Idee zeigen könntest. Denn ich habe versucht es nachzubauen aber es gelang leider nicht.
Mir ist nur dies auf die schnelle eingefallen ansonsten hatte ich keine Idee eine längere Laufzeit zu produzieren.
liebe grüsse thomas

Anzeige
AW: ups kleines missverständnis
20.08.2015 11:44:22
Daniel
Hi
im Prinizp so.
die Reiter der Multipage solltest du über die Eigenschaftsliste noch ausblenden.
ich lasse die vorab aber noch sichtbar, weils die sonst auch im Edtior nicht sichtbar sind und es dann etwas aufwendig ist, die einzelnen Seiten zu bearbeiten.
https://www.herber.de/bbs/user/99702.xlsm
Gruß Daniel

Anzeige
vielen dank
20.08.2015 14:12:59
Thomas
hallo daniel,
vielen dank dies kann ich nachbauen. Und ist genau das was ich gebrauchen kann. Macht es viel arbeit wenn du diese Meldung noch mit einbaust?
(wenns so Infos benötigt werden wie "123456 Zeilen bearbeitet, davon 123 fehlerhaft")
PS. dein beispiel mit dem testmacro ist deutlich besser als meine idee.
liebe grüsse thomas

Anzeige
AW: vielen dank
20.08.2015 15:53:31
Daniel
Hi
naja, für solche meldungen braucht man ja ein konkretes Fallbeispiel.
da kann ich dir jetzt auch nicht weiterhelfen.
oder muss ich dir erklären, wie man per Makro die Beschriftung eines Userform-Labels ändert?
naja gut.
verwende den Code: Userform1.Label1.Caption = "123456 Zeilen bearbeitet, davon 123 fehlerhaft"
und platziere in im Berechnungsmakro und das Label auf der Seite 3 der Multipage.
Gruß Daniel

Anzeige
AW: vielen dank an Daniel
21.08.2015 10:48:11
Thomas
Hallo Daniel,
sorry das ich mich erst heut melde. Ich hatte gestern wieder ne Leitungs Störung.
Hab vielen dank für deine tipps. Ich werde damit ein wenig experimentieren.
vielen dank dank
thomas
;
Anzeige
Anzeige

Infobox / Tutorial

Statusmeldung in Excel-Makros implementieren


Schritt-für-Schritt-Anleitung

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

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle einen CommandButton in einer Userform:

    • Füge einen Button (CommandButton) zu deiner Userform hinzu.
  3. Füge folgenden Code in das Click-Ereignis des Buttons ein:

    Private Sub CommandButton1_Click()
       Application.StatusBar = "Makro läuft, bitte warten...."
       ' Füge hier Deine Makros ein
       Call Daten_holen
       Call Tabelle_ordnen_Modul
       Call leerzeilen_loeschen
       Application.StatusBar = "Fertig"
    End Sub
  4. Verwende DoEvents für längere Makros:

    • Füge DoEvents nach jedem Statusbar-Befehl ein, um sicherzustellen, dass Excel die Statusleiste aktualisieren kann.
    Application.StatusBar = "Läuft"
    DoEvents
  5. Testen:

    • Starte die Userform und klicke auf den Button, um die Statusmeldungen zu testen.

Häufige Fehler und Lösungen

  • Statusleiste bleibt eingefroren:

    • Stelle sicher, dass DoEvents an den richtigen Stellen im Code platziert ist. Dies ermöglicht Excel, die Statusleiste zu aktualisieren.
  • Keine Meldung angezeigt:

    • Überprüfe, ob der Code tatsächlich ausgeführt wird und dass keine Fehler in den aufgerufenen Makros entstehen.

Alternative Methoden

  • Verwendung einer Multipage auf der Userform:

    • Erstelle eine Multipage mit zwei Seiten: eine für die Steuerelemente und eine für die "Bitte warten"-Meldung. Wechsle zwischen den Seiten während der Ausführung der Makros.
  • Zusätzliches Tabellenblatt:

    • Lege ein neues Tabellenblatt an, auf dem große Schriftzüge wie "Bitte warten" angezeigt werden. Blende dieses Blatt während der Makro-Ausführung ein und aus.

Praktische Beispiele

  • Beispiel für ein einfaches Makro mit Statusmeldungen:

    Private Sub CommandButton1_Click()
       Application.ScreenUpdating = False
       Application.StatusBar = "Makro läuft..."
       DoEvents
       Application.Wait Now + TimeValue("00:00:05") ' Simuliert lange Verarbeitung
       Application.StatusBar = "Fertig"
       Application.ScreenUpdating = True
    End Sub
  • Beispiel für eine Multipage-Nutzung:

    Private Sub CommandButton1_Click()
       Multipage1.Value = 1 ' Seite mit "Bitte warten"
       ' Lange Makros hier aufrufen
       Multipage1.Value = 0 ' Zurück zur Hauptseite
    End Sub

Tipps für Profis

  • Nutze Application.Wait für eine kontrollierte Verzögerung, wenn Du testen möchtest, ob die Statusleiste aktualisiert wird.

  • Experimentiere mit Userform-Labels, um dynamische Statusmeldungen anzuzeigen:

    Userform1.Label1.Caption = "123456 Zeilen bearbeitet, davon 123 fehlerhaft"
  • Achte darauf, dass die Statusmeldungen klar und informativ sind, um den Anwender während längerer Prozesse zu beruhigen.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Statusleiste immer aktualisiert wird? Um die Statusleiste während der Ausführung Deines Makros immer aktuell zu halten, füge DoEvents nach jedem Statusbefehl ein.

2. Was mache ich, wenn Excel nicht mehr reagiert? Wenn Excel nicht mehr reagiert, kann es hilfreich sein, DoEvents an den kritischen Stellen im Code einzufügen, um Excel die Möglichkeit zu geben, andere Aufgaben zu erledigen.

3. Wie kann ich eine Fortschrittsanzeige in meinem Makro einbauen? Du kannst eine Progressbar auf Deiner Userform hinzufügen und diese während der Ausführung Deines Makros aktualisieren. Verwende dafür die Multipage-Technik oder ein Label, um den Fortschritt anzuzeigen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige