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

VBA -Makro mittendrin beenden

Forumthread: VBA -Makro mittendrin beenden

VBA -Makro mittendrin beenden
26.05.2004 12:59:57
alex
Hallo!
Mit welchem befehl kann ich ein ausgeführtes Makro vorzeitig beenden.
Habe eine Fehlerabfangroutine (if) und brauche für den fall eines fehler einen befehl, der das weitere ausführen abbricht. Die abfangroutine ist in einer untersub, dashalb reicht es nicht einfach die sub zu beenden.
danke
der alex
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA -Makro mittendrin beenden
26.05.2004 13:01:27
Remo
Probiers mal mit
Exit Sub
Gruss Remo
AW: VBA -Makro mittendrin beenden
26.05.2004 13:04:34
alex
ja gerade das reicht nicht aus, da ich die sub mit der fehlerroutine in einer anderen sub aufrufe und mit diesem befehl ja dann nur die untersub beendet wird. oder?
gruß
alex
AW: VBA -Makro mittendrin beenden
26.05.2004 13:04:23
Uduuh
Hallo,
kannst du nicht ein paar Codeschnipsel posten? Ohne deinen Ablauf ist die Frage nur sehr ungenau zu beantworten. Und meine Glaskugel ist gerade im Pfandhaus.;-))
Gruß aus'm Pott
Udo
Anzeige
AW: VBA -Makro mittendrin beenden
26.05.2004 13:08:29
alex

Sub oeffnen(Pfad As String, Datei As String)
On Error Resume Next
Workbooks.Open (Pfad & Datei)
If Err.Number > 0 Then
MsgBox ("Dateiname oder Pfad kann nicht gefunden werden.")
'>>>>> an dieser stelle soll sämtliche code-ausführung beendet werden
End If
End Sub

diese

Sub wird aufgerufen durch eine andere 

Sub und kehrt nach beendigunig von "oeffnen" zu dieser zurück. auch diese muss im falle eines fehlers beendet werden...
danke!
der alex

Anzeige
AW: VBA -Makro mittendrin beenden
26.05.2004 13:16:07
Uduuh
Hallo,
1. deklariere eine Public-Variable: Public bolError as Boolean (in einem Modul, außerhalb einer Prozedur)
2. im Falle des Fehlers setzt du sie auf True: bolError=True
3. hinter den Aufruf von Sub oeffnen setzt du: If bolError=true Then Exit Sub.
Gruß aus'm Pott
Udo
http://www.excelerator.de
Anzeige
AW: VBA -Makro mittendrin beenden
26.05.2004 13:19:49
Matthias G
Hallo Alex,
es geht auch ohne Public-Variable:

Sub sub1()
Dim Fehler As Boolean
Oeffnen "C:\test\", "test.xls", Fehler
If Fehler Then Exit Sub
MsgBox "Kein Fehler"
' weiter im Text
End Sub


Sub Oeffnen(Pfad As String, Datei As String, Fehler As Boolean)
Fehler = False
On Error Resume Next
Workbooks.Open (Pfad & Datei)
If Err.Number > 0 Then
MsgBox ("Dateiname oder Pfad kann nicht gefunden werden.")
Fehler = True
End If
End Sub

Gruß Matthias
Anzeige
AW: VBA -Makro mittendrin beenden
26.05.2004 13:21:36
WernerB.
Hallo Alex,
mit dem Befehlswort "End" werden alle laufenden Makros beendet/abgebrochen.
Viel Erfolg wünscht
WernerB.
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

VBA-Makro mittendrin beenden


Schritt-für-Schritt-Anleitung

Um ein Excel VBA Makro vorzeitig zu beenden, gibt es verschiedene Ansätze. Hier ist eine allgemeine Schritt-für-Schritt-Anleitung:

  1. Fehler abfangen: Verwende die Fehlerbehandlungsroutine On Error Resume Next, um Fehler zu erkennen.
  2. Variable deklarieren: Erstelle eine Boolean-Variable, um den Fehlerstatus zu speichern.
  3. Fehler setzen: Setze die Variable auf True, wenn ein Fehler auftritt.
  4. Abbruchbefehl einfügen: Verwende If Fehler Then Exit Sub, um das Makro abzubrechen.

Ein einfaches Beispiel könnte so aussehen:

Sub Haupt()
    Dim Fehler As Boolean
    Oeffnen "C:\test\", "test.xls", Fehler
    If Fehler Then Exit Sub
    MsgBox "Kein Fehler aufgetreten"
End Sub

Sub Oeffnen(Pfad As String, Datei As String, Fehler As Boolean)
    Fehler = False
    On Error Resume Next
    Workbooks.Open (Pfad & Datei)
    If Err.Number > 0 Then
        MsgBox ("Dateiname oder Pfad kann nicht gefunden werden.")
        Fehler = True
    End If
End Sub

Häufige Fehler und Lösungen

  1. Das Makro wird nicht beendet: Wenn du Exit Sub verwendest, aber das Makro nicht stoppt, stelle sicher, dass du die Abbruchbedingung richtig gesetzt hast. Überprüfe, ob die Fehlerbehandlungsroutine korrekt implementiert ist.

  2. Unzureichende Fehlerbehandlung: Wenn du On Error Resume Next verwendest, stelle sicher, dass du danach einen klaren Abbruchbefehl einfügt, um unerwünschte Folgewirkungen zu vermeiden.

  3. Nicht die richtige Sub beenden: Wenn du Exit Sub in einer Unterroutine nutzt, die von einer anderen Sub aufgerufen wird, wird nur die Unterroutine beendet. Verwende stattdessen eine globale Variable, um die Hauptroutine zu informieren.


Alternative Methoden

  • Public-Variable verwenden: Deklariere eine Public-Variable, die den Fehlerstatus speichert. Nutze diese Variable dann in der aufrufenden Sub, um die Ausführung zu steuern.

  • End Befehl: Mit dem Befehl End kannst du alle laufenden Makros abbrechen. Dies ist jedoch ein drastischer Schritt und sollte mit Vorsicht verwendet werden.

  • Tastenkombinationen: Verwende die Tastenkombination Strg + Pause (Pause-Taste), um die Ausführung des Makros sofort zu stoppen, wenn es in einer Endlosschleife feststeckt.


Praktische Beispiele

Hier sind einige praktische Beispiele zur Verwendung der Abbruchbefehle in VBA:

  1. Abbrechen bei Fehlern:

    Sub Beispiel()
        On Error Resume Next
        ' Code, der einen Fehler verursachen könnte
        If Err.Number <> 0 Then
            MsgBox "Fehler aufgetreten. Abbruch."
            Exit Sub
        End If
    End Sub
  2. Nutzung von End:

    Sub MakroBeenden()
        ' Irgendwelche Logik hier
        If FehlerAufgetreten Then
            MsgBox "Makro wird beendet."
            End ' Alle Makros beenden
        End If
    End Sub

Tipps für Profis

  • Verwende On Error GoTo anstelle von On Error Resume Next, um eine präzisere Fehlerbehandlung zu ermöglichen.
  • Erstelle eine zentrale Fehlerbehandlungsroutine, die alle Fehler an einem Ort verwaltet, um den Code übersichtlicher zu gestalten.
  • Nutze Kommentare, um den Code verständlicher zu machen, besonders an Stellen, an denen du das Makro beendest.

FAQ: Häufige Fragen

1. Wie kann ich ein Excel VBA Makro während der Ausführung abbrechen?
Du kannst das Makro mit der Kombination Strg + Pause abbrechen oder einen Abbruchbefehl wie Exit Sub in deinen Code einfügen.

2. Was ist der Unterschied zwischen Exit Sub und End?
Exit Sub beendet nur die aktuelle Subroutine, während End alle laufenden Makros abbricht. Verwende End mit Vorsicht, da es alle Variablen und den aktuellen Status zurücksetzt.

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