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

Forumthread: Makro stoppen

Makro stoppen
Ximena
Halli Hallo :D Heute hab ich erst Abends eine Frage :)
Ich habe eine Hauptmakro, in der ich mit Call mehere andere Module aufrufe. Eines dieser Module enthält den Code für das Öffnen eines FileDialog, in dem ich mir ein File aussuche. In diesem Fenster hat es dann ja einen OK und einen CANCEL Button. Wenn ich momentan auf Cancel klicke, dann gibt meine Makro einen Fehler, weil sie kein File findet (verständlicherweise).
Ich habe jetzt in das Modul eine Bedingung eingefügt:
If myFile = False Then
Exit Sub
End If

Aber, das stopp mir nur das Modul und nicht die ganze Makro (also die Hauptmakro). Was muss ich tun, dass wenn da einer CANCEL (also kein File ausgewählt hat) drückt, damit meine ganze Makro aufhört zu arbeiten?
Wäre froh um Hilfe!
Liebe Grüsse
Ximena
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Makro stoppen
05.06.2012 16:57:30
Rudi
Hallo,
if myFile = False Then End
Gruß
Rudi
Danke!
06.06.2012 08:28:49
Ximena
Hallo Rudi
Danke für deine Antwort. Funktioniert einwandfrei :D
Liebe Grüsse Ximena
Makro stoppen
05.06.2012 17:00:38
Sheldon
Hallo Ximena,
dein Problem löst du, indem du einen Wert ans Hauptmakro zurückgibst. Z. B. könntest du das Sub als Function umfunktionieren, schon gäbe es einen Rückgabewert, der wahlweise ein File oder eben ein Leerstring ist. Das wiederum kannst du im "Hauptmakro" abfragen mit
If FileReturn_Function=false then
Exit Sub
Else
...
End If
Du kannst natürlich auch eine Variable, z. B. ein Boolean, global definieren und auf false setzen, und falls nun jemand auf Cancel klickt, setzt du sie auf true. Das kannst du dann im "Hauptmakro" auch wieder entsprechend abfragen und das Sub ebenfalls beenden.
Als Randbemerkung: Du schreibst immer von "die Makro", aber ein Makro ist wahlweise männlich oder sächlich, sagt Herr Duden.
Gruß
Sheldon
Anzeige
Unterschied?!
06.06.2012 08:30:39
Ximena
Hallo Sheldon
Ich habe jetzt die Lösung gefunden, dass ich anstelle von "Exit Sub" einfach "End" schreibe. Das klappt hervorragend.
Was ist denn der Unterschied von deiner (im Gegensatz zu der obigen) komplizierteren Idee zu der einfacheren? Ist eine besser? Machen beide dasselbe?
Ohh, das wusste ich nicht :P Ich dachte immer es sei "die Makro". Werds mir merken :D
Liebe Grüsse
Ximena
Anzeige
AW: Unterschied?!
06.06.2012 11:17:03
Sheldon
Hi Ximena,
mit End ist es natürlich einfacher! Wusste ich gar nicht, ich lös das immer so wie ich beschrieben hab. Zumindest für mein Hirn ist es einfacher wenn ich in verschachtelten Makros genau steuern kann, welches weiter laufen soll und welches nicht. Zumindest das kann man mit einem Rückgabewert oder einer Variablen-steuerung erreichen.
Gruß
Sheldon
Anzeige
End statt Exit Sub owT
05.06.2012 17:01:31
IngGi
owT=ohne weiteren Text
Gruß Ingolf
Danke!
06.06.2012 08:31:03
Ximena
Hallo Ingolf
Danke, klappt super!
Liebe Grüsse
Ximena
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Excel Makro Stoppen: So brichst du dein VBA Makro ab


Schritt-für-Schritt-Anleitung

Um ein Excel Makro zu stoppen oder abzubrechen, kannst du verschiedene Ansätze nutzen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Makro öffnen: Öffne dein Excel-Dokument und gehe zu dem VBA-Editor (Alt + F11).

  2. Modul auswählen: Wähle das Modul aus, in dem sich dein Makro befindet.

  3. Bedingung einfügen: Füge eine Abfrage hinzu, um zu prüfen, ob der Benutzer auf „Cancel“ geklickt hat. Hier ein Beispiel:

    If myFile = False Then
        End ' oder Exit Sub
    End If
  4. Makro testen: Führe dein Makro aus und teste, ob es korrekt stoppt, wenn „Cancel“ gedrückt wird.


Häufige Fehler und Lösungen

  • Fehler: Makro läuft weiter nach Cancel

    • Lösung: Wenn du „Exit Sub“ verwendest, stoppt nur das aktuelle Modul. Verwende stattdessen „End“, um das gesamte Makro zu beenden.
  • Fehler: Unbehandelte Fehler nach Cancel

    • Lösung: Stelle sicher, dass du den Rückgabewert korrekt abfragst. Wenn kein File ausgewählt wurde, sollte das Hauptmakro ebenfalls auf „End“ reagieren.

Alternative Methoden

Es gibt mehrere Möglichkeiten, ein Makro zu beenden:

  1. Verwendung von Funktionen: Du kannst deine Subroutine als Funktion umwandeln, um einen Rückgabewert zu erhalten, der anzeigt, ob das Makro abgebrochen werden sollte.

    Function FileReturn_Function() As String
        ' Code für FileDialog
        If myFile = False Then
            FileReturn_Function = "" ' Rückgabe eines Leerstrings
            Exit Function
        End If
        FileReturn_Function = myFile ' Rückgabe des Files
    End Function
  2. Globale Variablen: Definiere eine globale Boolean-Variable, die gesetzt wird, wenn „Cancel“ gedrückt wird, und überprüfe diese im Hauptmakro.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du ein Excel Makro stoppen kannst:

  • Beispiel 1: Mit „End“:

    Sub HauptMakro()
        ' Code
        If myFile = False Then
            End
        End If
    End Sub
  • Beispiel 2: Rückgabewert verwenden:

    Sub HauptMakro()
        Dim result As String
        result = FileReturn_Function()
        If result = "" Then
            End
        End If
    End Sub

Tipps für Profis

  • Tastenkombinationen: Nutze die Tastenkombination „Esc“ während der Ausführung eines Makros, um es schnell zu stoppen.
  • Debugging: Verwende den Debugger im VBA-Editor, um potenzielle Fehlerquellen zu identifizieren, die das Stoppen deines Makros verhindern könnten.
  • Fehlerbehandlung: Implementiere strukturierte Fehlerbehandlung mit On Error-Anweisungen, um sicherzustellen, dass dein Makro auch bei unerwarteten Fehlern sicher stoppt.

FAQ: Häufige Fragen

1. Wie kann ich ein Makro während der Ausführung abbrechen?
Du kannst das Makro mit der „Esc“-Taste abbrechen oder eine Bedingung im Code verwenden, um das Makro programmgesteuert zu beenden.

2. Was ist der Unterschied zwischen „End“ und „Exit Sub“?
„End“ beendet das gesamte Makro, während „Exit Sub“ nur die aktuelle Subroutine verlässt. Verwende „End“, wenn du das gesamte Makro stoppen möchtest.

3. Wie kann ich ein Makro anhalten und später fortsetzen?
Excel bietet keine native Funktion zum späteren Fortsetzen eines Makros. Du kannst jedoch Tools oder benutzerdefinierte Lösungen in Betracht ziehen, um den Status des Makros zu speichern.

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