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

Forumthread: Meldung nach/während Makro läuft

Meldung nach/während Makro läuft
Ludwig
Hallo zusammen!
Ich habe mir ein einfaches Copy/Paste Makro erstellt.
Da dies ziemlich viele unterschiedliche Zeilen betrifft und dementsprechend einige Sekunden dauert (ca. 20) bis das Makro fertig ist, würde ich gerne noch eine Meldung erscheinen lassen.
Am Besten, während das Makro gerade läuft und danach automatisch verschwindet oder aber eine Meldung nachdem das Makro fertig ist. Ein einfacher Text würde reichen. z. B. "Aktualisierung beendet!"
Kann mir jemand Tips geben, wie ich sowas in mein bestehendes Makro einbauen kann?
Vielen Dank schonmal.
Gruß,
Ludwig
Anzeige

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

Betreff
Benutzer
Anzeige
AW: Meldung nach/während Makro läuft
01.07.2010 15:13:53
Gerd
Hallo Ludwig,
als letzte Codezeile:
Msgbox "Aktualisierung beendet!"
Aber: Ein einfaches Copy/Paste - Makro läuft normalerweise keine 20 Sekunden.
Gruß Gerd
Msgbox während Schleife - verzögert Ablauf
01.07.2010 15:29:48
NoNet
Hallo Ludwig,
mit folgendem Code ist es grundsätzlich möglich, eine Art "MsgBox" für eine kurze Zeit anzuzeigen und automatisch wieder auszublenden. Allerdings verzögert die Anzeige der MsgBox den Ablauf zusätzlich, da während der Anzeige (je 1 Sekunde) die Schleife nicht weiter durchlaufen wird :
Sub SchleifeMitMsgBox()
Dim lngT As Long
For lngT = 1 To 65432
[B1] = lngT
If lngT Mod 10000 = 0 Then MsgBoxZeit "Test " & lngT, 1, "Info"
Cells(lngT, 1) = lngT
Next
MsgBox "Ende !"
End Sub
Sub MsgBoxZeit(strText, intSekunden, Optional strTitel = "Meldung")
Dim objWSH As Object, intMSG As Integer
Set objWSH = CreateObject("WScript.Shell")
intMSG = objWSH.Popup(strText, intSekunden, strTitel)
Set objWSH = Nothing
End Sub
Bitte teste den Code in einem leeren Tabellenblatt, da die Werte der Spalte A und der Zelle B1 überschrieben werden !
Gruß, NoNet
gegen    2:1

Anzeige
AW: Msgbox während Schleife - verzögert Ablauf
01.07.2010 15:33:35
Martin
Hallo NoNet,
um diese Verzögerung zu vermeiden, sollte statt der MsgBox vielleicht besser ein UserForm eingesetzt werden. Vielleicht wäre der Berechnungscode dann im Activation-Ereignis des UserForm besser aufgehoben.
Viele Grüße
Martin
Application.Statusbar
01.07.2010 15:30:15
Martin
Hallo Ludwig,
sieh dir mal "Application.StatusBar" an, die Statusbar verwende ich gerne als "Statusanzeige" bei länger dauernden VBA-Berechnungen. Ich blende darüber meist in Prozent die erfolgten Berechnungen ein oder beim Datenimport "Importiere Datensatz X von y". Am Ende solltest du die Statusbar mit "Application.StatusBar = False" wieder zurücksetzen.
Viele Grüße
Martin
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Meldung während eines Makros in Excel anzeigen


Schritt-für-Schritt-Anleitung

Um eine Meldung während der Ausführung eines Makros in Excel anzuzeigen, kannst du die MsgBox-Funktion oder ein benutzerdefiniertes UserForm verwenden. Hier sind die Schritte zur Implementierung:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeineDatei.xlsx)“, wähle „Einfügen“ und dann „Modul“.
  3. Füge den folgenden Code ein:
Sub MeinMakro()
    Dim lngT As Long
    For lngT = 1 To 100000
        Cells(lngT, 1) = lngT
        If lngT Mod 10000 = 0 Then
            MsgBox "Aktualisierung bei " & lngT & " abgeschlossen!", vbInformation
        End If
    Next lngT
    MsgBox "Aktualisierung beendet!", vbInformation
End Sub
  1. Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Drücke ALT + F8, wähle „MeinMakro“ und klicke auf „Ausführen“.

Häufige Fehler und Lösungen

  • Fehler: Das Makro läuft nicht flüssig.
    • Lösung: Verwende Application.StatusBar, um den Fortschritt anzuzeigen, anstatt MsgBox. Beispiel:
Application.StatusBar = "Aktualisierung bei " & lngT & "..."
  • Fehler: Die Meldung erscheint nicht.
    • Lösung: Stelle sicher, dass die MsgBox-Funktion im richtigen Kontext aufgerufen wird, nicht innerhalb von Schleifen, die zu schnell durchlaufen werden.

Alternative Methoden

Eine alternative Methode zur Anzeige von Meldungen während der Ausführung eines Makros ist die Verwendung eines UserForms. Hier ist ein einfacher Ansatz:

  1. Erstelle ein UserForm: Klicke im VBA-Editor auf „Einfügen“ und dann „UserForm“.
  2. Füge ein Label hinzu, um den Status anzuzeigen.
  3. Verwende den folgenden Code:
Sub MeinMakroMitUserForm()
    Dim lngT As Long
    UserForm1.Show vbModeless
    For lngT = 1 To 100000
        Cells(lngT, 1) = lngT
        UserForm1.Label1.Caption = "Aktualisierung bei " & lngT
    Next lngT
    UserForm1.Hide
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung der MsgBox und Application.StatusBar:

  • Beispiel für MsgBox:
    Verwende den folgenden Code, um eine einfache Meldung am Ende einer Datenbearbeitung anzuzeigen:
Sub DatenBearbeiten()
    ' Datenbearbeitungscode hier
    MsgBox "Datenbearbeitung abgeschlossen!"
End Sub
  • Beispiel für StatusBar:
    Um den Fortschritt während einer langen Berechnung zu zeigen:
Sub LangeBerechnung()
    Dim i As Long
    For i = 1 To 100
        Application.StatusBar = "Berechnung " & i & " von 100"
        ' Berechnungslogik hier
    Next i
    Application.StatusBar = False
End Sub

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um das Flickern des Bildschirms während der Ausführung des Makros zu vermeiden.
  • Verwende die DoEvents-Funktion, um die Benutzeroberfläche responsive zu halten, während das Makro läuft.
  • Experimentiere mit benutzerdefinierten UserForms für eine ansprechendere Benutzeroberfläche.

FAQ: Häufige Fragen

1. Wie kann ich die StatusBar zurücksetzen?
Am Ende deines Makros solltest du Application.StatusBar = False verwenden, um die Statusleiste zurückzusetzen.

2. Warum verzögert sich mein Makro, wenn ich MsgBox benutze?
Die MsgBox stoppt die Ausführung des Makros, bis der Benutzer die Meldung schließt. Überlege, ob ein UserForm oder die StatusBar eine bessere Option für deine Anforderungen ist.

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