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

VBA bei Bedingung verlassen

Forumthread: VBA bei Bedingung verlassen

VBA bei Bedingung verlassen
25.01.2007 15:48:08
Paul
Hallo zusammen,
ich würde gerne wissen ob einen einen Befehl in VBA gibt welcher die Anwendung komplett terminiert.
Hintergrund ist folgender:
Ich rufe aus einem Makro ein zweites auf. Bei einer bestimmten Bedingung soll dieses eine Fehlermeldung ausgeben und VBA beenden. Nun beendet es aber nur sich selbst und springt dann, da es ja auch dem 1. Makro aufgerufen wurde, wieder dorthin zurück.
Ist es also möglich das ganze mit so etwas wie "Exit VBA" zu beenden?
Gruß
Paul
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA bei Bedingung verlassen
25.01.2007 15:53:32
ronny
hallo paul,
möchtest du die anwendung, also excel bzw. die arbeitsmappe beenden oder nur alle makros?
gruß ronny
AW: VBA bei Bedingung verlassen
25.01.2007 15:59:15
Paul
Hallo Ronny,
ich möchte einfach die Code-Ausführung beenden. Da ich ja das Makro aus einem anderen aufgerufen habe beendet er mit "Exit Sub" nur das aktuelle Makro und springt wieder ins erste.
Gruß
Paul
Anzeige
AW: VBA bei Bedingung verlassen
25.01.2007 16:03:12
ronny
dann mußt du die bedingung, mit der das erste makro beedndet wurde als public deklarieren und ins erste makro übernehmen. hier wird dann ebenfalls die bedingung geprüft und kann bei erfüllung auch dieses makro beenden.
gruß ronny
AW: VBA bei Bedingung verlassen
25.01.2007 15:54:19
mpb
Hallo Paul,
versuch's mit "End". Beispiel:

Sub test()
MsgBox "start"
Call Abbruch
MsgBox "weiter"
End Sub


Sub Abbruch()
x = 3
If x = 3 Then
End
End If
End Sub

Gruß
Martin
Anzeige
AW: VBA bei Bedingung verlassen
25.01.2007 16:01:30
Paul
Hallo Martin,
ja danke das hab ich gesucht :)
Gruß
Paul
;
Anzeige
Anzeige

Infobox / Tutorial

VBA-Befehle zum Beenden der Code-Ausführung


Schritt-für-Schritt-Anleitung

Wenn du in VBA sicherstellen möchtest, dass ein Makro die gesamte Code-Ausführung beendet, kannst du dies mit dem Befehl End erreichen. Hier ist eine einfache Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf den Projekt-Explorer und wähle „Einfügen“ > „Modul“.

  3. Schreibe dein Makro: Füge den folgenden Code ein:

    Sub test()
       MsgBox "Start"
       Call Abbruch
       MsgBox "Weiter"
    End Sub
    
    Sub Abbruch()
       x = 3
       If x = 3 Then
           End
       End If
    End Sub
  4. Führe das Makro aus: Drücke F5, um das Makro test auszuführen.

Der Befehl End wird die Code-Ausführung an der Stelle beenden, an der er aufgerufen wird.


Häufige Fehler und Lösungen

  • Fehler: Makro springt zurück: Wenn du Exit Sub verwendest, wird nur das aktuelle Makro beendet. Um die gesamte Code-Ausführung zu stoppen, benutze End.

  • Lösung für Rücksprünge: Wenn du die Code-Ausführung in mehreren Makros verhindern möchtest, kannst du eine öffentliche Variable deklarieren und die Bedingung in beiden Makros überprüfen.

Public StopExecution As Boolean

Sub test()
    If StopExecution Then Exit Sub
    ' Weitere Codeausführung
End Sub

Sub Abbruch()
    StopExecution = True
End Sub

Alternative Methoden

Eine andere Methode, um die Code-Ausführung zu beenden, ist die Verwendung von Exit Sub in Kombination mit einer Bedingung. Dies ist jedoch nur für das aktuelle Makro relevant:

Sub test()
    If someCondition Then Exit Sub
    ' Weiterer Code
End Sub

In diesem Fall wird das Makro nur beendet, wenn die someCondition erfüllt ist, und nicht die gesamte Anwendung.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den End-Befehl und die Abbruchbedingungen in verschiedenen Szenarien verwenden kannst:

  1. Beenden bei Fehler:

    Sub BeispielFehler()
       On Error GoTo Fehlerbehandlung
       ' Code
       Exit Sub
    Fehlerbehandlung:
       MsgBox "Ein Fehler ist aufgetreten."
       End
    End Sub
  2. Bedingte Beendigung:

    Sub BeispielBedingung()
       x = 5
       If x > 3 Then
           MsgBox "Beende Ausführung."
           End
       End If
    End Sub

Tipps für Profis

  • Verwende End mit Bedacht: Der Befehl End kann dazu führen, dass alle Variablen und Objekte gelöscht werden. Verwende ihn nur, wenn du sicher bist, dass du die gesamte Code-Ausführung beenden möchtest.

  • Debugging: Nutze Debug.Print zur Fehlersuche, bevor du End aufrufst, um festzustellen, wo der Code möglicherweise fehlschlägt.

  • Öffentliche Variablen: Wenn du den Status der Code-Ausführung zwischen mehreren Subroutinen teilen möchtest, verwende öffentliche Variablen, wie bereits beschrieben.


FAQ: Häufige Fragen

1. Kann ich die Excel-Anwendung mit VBA ganz schließen?
Ja, du kannst die Excel-Anwendung schließen, indem du Application.Quit verwendest, aber das beendet auch die Anwendung selbst, nicht nur das Makro.

2. Was passiert, wenn ich End benutze?
Der Befehl End stoppt die Code-Ausführung sofort, und alle Variablen werden zurückgesetzt. Verwende ihn vorsichtig, um unbeabsichtigte Datenverluste zu vermeiden.

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