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

Forumthread: Prozedur abbrechen

Prozedur abbrechen
Gordon
Moin moin,
hier mal eine Interessensfrage:
Ich starte einen Code per Commandbutton. In diesem Code befindet sich eine Verzweigung auf ein Modul. In diesem Modul wird ein Wert überprüft und je nach Ergebniss eine Aktion ausgeführt. Nun zur eigentlich Frage: Wie kann der Code des Moduls die gesamte Prozedur, die ja duch den CommandButton ausgelöst wurde, abbrechen. Mit 'Exit Sub' wird doch nur der Code im Modul gestoppt, oder?
Gruß
Gordon
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Prozedur abbrechen
09.06.2010 12:28:37
Rudi
Hallo,
z.B. so:
in ein Modul:
Public blnCancel As Boolean
Sub Makro1()
If Not IsNumeric(Range("A1")) Or Range("A1") = "" Then
blnCancel = True
Exit Sub
End If
Range("A1") = Range("A1") * 3
End Sub
Sub Makro2()
MsgBox "hier gehts weiter"
End Sub
Für den CB
Private Sub CommandButton1_Click()
Makro1
If blnCancel Then
blnCancel = False
Exit Sub
End If
Makro2
End Sub

Gruß
Rudi
Anzeige
AW: Prozedur abbrechen
09.06.2010 13:06:10
IngGi
Hallo Gordon,
andere Möglichkeit: "End" statt "Exit Sub"
Gruß Ingolf
AW: Prozedur abbrechen
09.06.2010 13:43:38
Gordon
Danke euch zwei....hat mir sehr geholfen!
Gruß
Gordon
;
Anzeige
Anzeige

Infobox / Tutorial

Prozedur abbrechen in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine VBA-Prozedur in Excel abzubrechen, kannst du folgende Schritte ausführen:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Erstelle eine öffentliche Variable: Definiere eine globale Variable, die den Abbruchzustand speichert. Füge dies in ein Modul ein:
    Public blnCancel As Boolean
  3. Erstelle die Hauptprozedur: In der Hauptprozedur, die durch einen Button ausgelöst wird, überprüfe die Abbruchbedingung:
    Sub CommandButton1_Click()
        Makro1
        If blnCancel Then
            blnCancel = False
            Exit Sub
        End If
        Makro2
    End Sub
  4. Erstelle die Unterprozedur: Hier wird die Logik implementiert, die entscheidet, ob die Prozedur abgebrochen werden soll:
    Sub Makro1()
        If Not IsNumeric(Range("A1")) Or Range("A1") = "" Then
            blnCancel = True
            Exit Sub
        End If
        Range("A1") = Range("A1") * 3
    End Sub
  5. Füge eine Fortsetzungsprozedur hinzu: Wenn die Bedingungen erfüllt sind, wird die nächste Prozedur ausgeführt:
    Sub Makro2()
        MsgBox "Hier geht's weiter"
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Die Prozedur wird nicht korrekt abgebrochen.

    • Lösung: Stelle sicher, dass die globale Variable blnCancel korrekt gesetzt und zurückgesetzt wird. Überprüfe auch die Bedingungen in Makro1.
  • Fehler: Der Code läuft weiter, obwohl er abgebrochen werden sollte.

    • Lösung: Überprüfe, ob du Exit Sub an den richtigen Stellen eingefügt hast, um die Ausführung zu stoppen.

Alternative Methoden

Eine weitere Möglichkeit, eine Prozedur in VBA abzubrechen, besteht darin, das End-Statement zu verwenden. Dies stoppt die gesamte Ausführung sofort, jedoch ist diese Methode nicht immer empfehlenswert, da sie alle Variablen zurücksetzt und die Anwendung destabilisieren kann.

Sub Makro1()
    If Not IsNumeric(Range("A1")) Or Range("A1") = "" Then
        End
    End If
    Range("A1") = Range("A1") * 3
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du eine Excel-Aktion abbrechen kannst:

Sub BeispielAbbrechen()
    If Range("B1").Value < 0 Then
        MsgBox "Aktion abgebrochen, Wert in B1 darf nicht negativ sein!"
        Exit Sub
    End If
    ' Weiterer Code hier
End Sub

In diesem Beispiel wird die Aktion abgebrochen, wenn der Wert in Zelle B1 negativ ist.


Tipps für Profis

  • Verwende Try-Catch-ähnliche Strukturen: Du kannst Fehlerbehandlungsroutinen in VBA verwenden, um Probleme zu identifizieren und die Prozedur sauber abzubrechen.
  • Dokumentation: Halte deinen Code gut dokumentiert, damit du und andere Benutzer die Abbruchbedingungen leicht nachvollziehen können.
  • Debugging: Nutze den Debugger, um sicherzustellen, dass die Bedingungen für den Abbruch der Prozedur wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Exit Sub und End?
Exit Sub beendet nur die aktuelle Subroutine, während End die gesamte Ausführung stoppt und alle Variablen zurücksetzt.

2. Kann ich eine Excel-Berechnung abbrechen?
Ja, du kannst Berechnungen in Excel vba abbrechen, indem du Bedingungen in deinem Code festlegst, die das Weiterlaufen der Berechnung verhindern.

3. Wie stoppe ich einen laufenden VBA-Code?
Drücke CTRL + BREAK, um einen laufenden VBA-Code manuell zu stoppen.

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