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

Exit Sub in if-Schleife

Forumthread: Exit Sub in if-Schleife

Exit Sub in if-Schleife
27.01.2003 09:21:17
Hannes
Hallo zusammen,

ich habe den Eindruck, dass die Exit Sub Anweisungen innerhalb einer if--Schleife nicht funktioniert. Ist dem so? Wenn ja meine zweite Frage:
Wie kann ich einen Code an einer bestimmten Stelle abbrechen. Ich habe es mit der Definition einer Marke versucht und die Marke ans Ende gestellt, trotzdem springt er zurück zu End-if und macht dort weiter (s. Codeausschnitt). Hat jemand eine Idee?

*************************************************************
Codeausschnitt:

If ku + ks = "11" Then
meld = MsgBox("", vbExclamation, "")
Reply = MsgBox("", vbYesNo, "")
If Reply = 6 Then 'Wert 6 steht für Antwort "Ja"
Beispiel.Value = 0
ks = "0"
Else:
answer = MsgBox("", vbInformation, "")
Beispiel2.Value = 0
ku = "0"
GoTo marke100
End If
End If
....
....
....
marke100:

End Sub
**********************************************************
Vielen Dank vorab.

Gruss
Hannes


Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 09:23:34
Michael Scheffler
Hllo,

wo ist Dein Exit Sub?

Und - gewöhne Dir nicht das Goto an, das ist verpönt!


Gruß

Micha

Re: Exit Sub in if-Schleife
27.01.2003 09:25:22
Hannes
Hallo Micha,

sorry, da hab ich mich wohl schlecht ausgedrückt. Ich will ja gerade das Goto marke100 duch das Exit Sub ersetzen, daher taucht es nicht im Code auf. Ich würde es gerne anstelle des Goto einbauen.

Gruss

Hannes

Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 09:32:16
wolf.w.radzinski
Hallo Hannes,

"Exit Sub" funktioniert (bei mir) immer, danach wird die Sub verlassen und kein weiterer Code innerhalb der sub ausgeführt (außer bei REKURSIVEM Aufruf).

Dein Testbeipiel bricht ebenfalls wie gewünscht ab!

d.h. dein problem findet sich irgendwo an ANDERER Stelle in deinem Code!

Gruß -wr-

Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 09:44:14
Hannes
Hallo Wolf,

danke für die Antwort,

Ich habe es eben nochmal in meinem Beispiel ausprobiert und als Prüfung, ob der Code abgebrochen wird folgende Zeile eingefügt:

ActiveSheet.Range("j23").Value = "Test"

Leider bricht bei mir der Code nicht ab. Da ich auch sonst keine Fehler entdecken kann (Es passiert alles wie beabsichtigt) frage ich mich, was das Problem sein kann. Hast Du einen Tipp?

Gruss
Hannes

P.S.: Wenn ich Exit Sub ausserhabl der if-Schleife an anderer Stelle schreibe, wird abgebrochen.
P.P.S.: Das Makro läuft hinter einer Schaltfläche

Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 10:17:53
Michael Scheffler
Hallo,

bitte poste Deinen Code mit Exit Sub!

Gruß

Micha

Re: Exit Sub in if-Schleife
27.01.2003 10:29:59
Hannes
Hallo Micha,

so hatte ich mir das vorgestellt:

If ku + ks = "11" Then
meld = MsgBox("", vbExclamation, "")
Reply = MsgBox("", vbYesNo, "")
If Reply = 6 Then 'Wert 6 steht für Antwort "Ja"
Beispiel.Value = 0
ks = "0"
Else:
answer = MsgBox("", vbInformation, "")
Beispiel2.Value = 0
ku = "0"
Exit Sub
End if
End If
....
....
....

End Sub


Gruss,

Hannes

Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 10:48:36
wolf.w.radzinski
Welcher EVENT startet dieses Makro? Button_Click? oder irgendwas anderes? Ich hab um deinen Code sogar noch eine Do..Loop Schleife gelegt und trotzdem endet das Makro nach Exit Sub!

Wie gesagt, der Fehler liegt an anderer Stelle und nicht in dem geposteten Codestück!

Gruß -wr-

Re: Exit Sub in if-Schleife
27.01.2003 10:50:55
wolf.w.radzinski
Welcher EVENT startet dieses Makro? Button_Click? oder irgendwas anderes? Ich hab um deinen Code sogar noch eine Do..Loop Schleife gelegt und trotzdem endet das Makro nach Exit Sub!

Wie gesagt, der Fehler liegt an anderer Stelle und nicht in dem geposteten Codestück!

Gruß -wr-

Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 10:52:43
Michael Scheffler
Hallo,

versuche bitte immer, Variable richtig zu dimensionieren!


Re: Exit Sub in if-Schleife
27.01.2003 10:55:17
Hannes
Hallo Wolf,

es ist tatsächlich ein Button_Click event.

Die .Value beziehen sich auf andere Buttons.

Frage dazu: Führt etwa die Value-Änderungen eines anderen Button automatisch zum Aufruf des hinterlegten Makros? Wenn ja, dann sieht es nur scheinbar so aus, als würde die Exit Sub nicht funktionieren.....Ist das die Erklärung?

Gruss Hannes

Anzeige
Re: Exit Sub in if-Schleife
27.01.2003 11:10:15
Hannes
Hallo Micha,

danke für den Hinweis.

Die Varibalendimension habe ich aus Platzgründen weggeschnitten. Die String-Eigenschaft von ku und ks ist absichtlich gewählt und hat einen anderen Hintergrund.

Gruss

Hannes

Re: Exit Sub in if-Schleife
27.01.2003 13:22:07
wolf.w.radzinski
solange ich nicht den ganzen Code (mindestens des Button_Click Events) habe, kann ich dir leider nicht sagen, warum die If Schleife nochmals durchlaufen wird.

Vorschlag: setze als ERSTE Codezeile im Button_Click eine MSGBOX, wenn diese mehrfach geöffnet wird, dann wird dein Click Event mehrfach ausgelöst.

oder schick mal den Button_Click_Code per PM

Gruß -wr-

Anzeige
probier es mal mit EnableEvents
27.01.2003 13:27:37
wolf.w.radzinski
Aufruf durch Änderung der Values? teste mal folgendes...


Re: probier es mal mit EnableEvents
27.01.2003 13:53:34
Hannes
Hallo Wolf,

Vielen Dank erst einmal für die Bemühungen.

Leider klappt das mit application.enableevents auch nicht. Auch mit Beispiel.Enabled = False klappt es nicht. Ich werde nochmal nachforschen ob man das nicht doch aussschalten kann. Es ist tatsächlich so, dass die Value-Änderung das andere Makro, bzw. die CheckBox, akitiviert.

Gruss
Hannes
Vielleicht finde ich noch eine Lösung, oder weiss jemand eine?

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Exit Sub in If-Schleifen für VBA in Excel


Schritt-für-Schritt-Anleitung

Um die Exit Sub Anweisung innerhalb einer If-Schleife in Excel VBA korrekt zu verwenden, gehe folgendermaßen vor:

  1. Öffne den VBA-Editor in Excel (drücke ALT + F11).

  2. Wähle das entsprechende Modul aus oder erstelle ein neues Modul.

  3. Schreibe deinen Code ähnlich dem folgenden Beispiel:

    Sub BeispielMakro()
        Dim ku As String
        Dim ks As String
        ku = "5"
        ks = "6"
    
        If ku + ks = "11" Then
            MsgBox "Summe ist 11"
            Exit Sub ' Hier wird die Sub verlassen, wenn die Bedingung erfüllt ist
        End If
    
        ' Weitere Codezeilen
        MsgBox "Der Code läuft weiter"
    End Sub
  4. Führe das Makro aus, um zu testen, ob die Exit Sub Anweisung wie gewünscht funktioniert.


Häufige Fehler und Lösungen

  • Problem: Exit Sub funktioniert nicht wie erwartet.

    • Lösung: Stelle sicher, dass sich die Exit Sub Anweisung innerhalb der If-Bedingung befindet und dass die Bedingung tatsächlich erfüllt ist.
  • Problem: Code springt zurück zu End If.

    • Lösung: Überprüfe, ob möglicherweise andere Event-Trigger (z.B. ein Button-Klick) den Code erneut auslösen. Verwende Application.EnableEvents = False, um dies zu verhindern.

Alternative Methoden

Falls Exit Sub nicht ausreicht, kannst du auch folgende Methoden verwenden:

  • GoTo: Obwohl es oft nicht empfohlen wird, kannst du die GoTo-Anweisung nutzen, um an eine bestimmte Stelle im Code zu springen. Achte jedoch darauf, den Code lesbar zu halten.

    If ku + ks = "11" Then
        GoTo Ende
    End If
    
    Ende:
    Exit Sub
  • Error Handling: Setze eine Fehlerbehandlung ein, um bei bestimmten Bedingungen den Code zu beenden.


Praktische Beispiele

Hier sind einige Beispiele für die Verwendung von Exit Sub:

  1. Beispiel 1: Abbrechen bei einer spezifischen Bedingung.

    If Not IsNumeric(ku) Then
        MsgBox "ku muss eine Zahl sein!"
        Exit Sub
    End If
  2. Beispiel 2: Verwendung innerhalb einer Schleife.

    For i = 1 To 10
        If Cells(i, 1).Value = "Stop" Then
            Exit Sub
        End If
    Next i

Tipps für Profis

  • Vermeide GoTo: Versuche, die Verwendung von GoTo zu minimieren, da dies die Lesbarkeit deines Codes beeinträchtigen kann.
  • Verwende Option Explicit: Setze am Beginn deines Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind.
  • Debugging: Nutze Debug.Print oder MsgBox, um den Zustand von Variablen während der Ausführung zu überprüfen.

FAQ: Häufige Fragen

1. Funktioniert Exit Sub innerhalb einer verschachtelten If-Bedingung? Ja, Exit Sub kann innerhalb verschachtelter If-Bedingungen verwendet werden, solange die Bedingung erfüllt ist.

2. Was passiert, wenn ich Exit Sub in einem Button_Click-Event verwende? Der Code bricht an der Stelle ab, an der Exit Sub aufgerufen wird. Wenn der Button jedoch andere Makros oder Events auslöst, könnte es so aussehen, als würde der Code nicht abbrechen.

3. Wie kann ich sicherstellen, dass mein Makro korrekt beendet wird? Nutze Application.EnableEvents = False, um unerwartete Aufrufe von anderen Makros zu verhindern, und überprüfe die Logik deiner If-Bedingungen gründlich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige