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

Forumthread: Sub durch MsgBox beenden

Sub durch MsgBox beenden
TOYY1
Hallo und guten Abend,
Ich habe einen Button mit dem eine lange Berechnung gestartet wird. Der einzige Button den ich sonst auf der UserForm nicht auf Locked gesetzt haben ist der "Vorgang abbrechen" Button.
Hier die zwei Codes:
Private Sub Berechnung_Click()
Call test_1
End Sub

Private Sub Abbrechen_Click()
MsgBox ("Wollen Sie den Vorgang abbrechen?"), vbYesNo, "Abfrage"
If vbYesNo = True Then
Exit Sub
End If
End Sub
Das zweite Sub soll sozusagen das erste beenden, aber ich weiß nicht wie? Kann mir bitte jemand behilflich sein?
Gruß, Frank
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Sub durch MsgBox beenden
21.09.2009 20:01:49
Hajo_Zi
Hallo Frank,
Du kannst durch den zweiten Button eine Aktion auslsen, obwohl das erste Makro läuft?
Dann versuche die radikale Methode nicht Exit Sub sondern End.
Gruß Hajo
AW: Sub durch MsgBox beenden
21.09.2009 20:37:20
TOYY1
Hmmm, so richtig geht das nicht. Ich habe eine Testdatei angefügt. Kann sich das bitte mal jemand anschauen?
https://www.herber.de/bbs/user/64586.xlsm
Gruß, Frank
Anzeige
AW: Sub durch MsgBox beenden
21.09.2009 20:43:17
Hajo_Zi
Hallo Frank,
Private Sub CommandButton2_Click()
If MsgBox("Wollen Sie den Vorgang abbrechen?", vbYesNo + vbQuestion, "Ende ?") = vbYes Then
End
End If
End Sub
Gruß Hajo
Anzeige
AW: Sub durch MsgBox beenden
21.09.2009 20:46:28
TOYY1
VIELEN DANK für deine Hilfe, wenn man den Syntax weiß, dann passiert auch das was passieren soll ;-).
Danke nochmal und einen schönen Abend,
Frank
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Sub durch MsgBox beenden


Schritt-für-Schritt-Anleitung

Um einen laufenden VBA Sub durch eine MsgBox zu beenden, kannst Du folgende Schritte befolgen:

  1. Erstelle einen Button für die Berechnung, der das Haupt-Makro ausführt:

    Private Sub Berechnung_Click()
       Call test_1
    End Sub
  2. Füge einen weiteren Button hinzu, um den Vorgang abzubrechen. Verwende die MsgBox, um eine Bestätigung vom Benutzer zu erhalten:

    Private Sub Abbrechen_Click()
       If MsgBox("Wollen Sie den Vorgang abbrechen?", vbYesNo + vbQuestion, "Abfrage") = vbYes Then
           End ' Beendet das laufende Sub
       End If
    End Sub
  3. Stelle sicher, dass die Abbrechen-Funktion korrekt mit dem Haupt-Makro verknüpft ist. Wenn der Benutzer auf "Ja" klickt, wird das Makro mit End beendet.


Häufige Fehler und Lösungen

  • Fehler: Die MsgBox wird nicht korrekt angezeigt.

    • Lösung: Überprüfe den Code auf Syntaxfehler und stelle sicher, dass die MsgBox die richtige Syntax hat.
  • Fehler: Das Sub wird nicht beendet.

    • Lösung: Stelle sicher, dass Du End verwendest, um das laufende Sub zu beenden. Exit Sub funktioniert nicht, wenn Du die gesamte Berechnung abbrechen möchtest.

Alternative Methoden

Wenn Du eine flexiblere Kontrolle über das Abbrechen eines Vorgangs benötigst, erwäge die Verwendung von globalen Variablen oder Flags. Du kannst eine Variable definieren, die den Status des Abbruchs speichert:

Dim cancelAction As Boolean

Private Sub Berechnung_Click()
    cancelAction = False
    Call test_1
End Sub

Private Sub Abbrechen_Click()
    If MsgBox("Wollen Sie den Vorgang abbrechen?", vbYesNo + vbQuestion, "Abfrage") = vbYes Then
        cancelAction = True
    End If
End Sub

Sub test_1()
    For i = 1 To 1000
        If cancelAction Then Exit Sub ' Beendet das Sub, wenn abgebrochen
        ' Lange Berechnung hier
    Next i
End Sub

Praktische Beispiele

Hier ist ein einfaches Beispiel, das zeigt, wie Du einen langen Vorgang mit einem Abbrechen-Button steuern kannst. Stelle sicher, dass Du die entsprechende Excel-Version verwendest, die VBA unterstützt:

Private Sub Berechnung_Click()
    Dim i As Long
    For i = 1 To 1000000
        ' Simuliere eine lange Berechnung
        DoEvents ' Ermöglicht das Verarbeiten von anderen Ereignissen
    Next i
End Sub

Private Sub Abbrechen_Click()
    If MsgBox("Wollen Sie den Vorgang abbrechen?", vbYesNo + vbQuestion, "Abfrage") = vbYes Then
        End ' Beendet das laufende Sub
    End If
End Sub

Tipps für Profis

  • Verwende DoEvents: Dies ermöglicht es Excel, auf Benutzeraktionen zu reagieren, während ein längerer Prozess läuft.

  • Vermeide End: In den meisten Fällen ist es besser, ein Sub mit Exit Sub zu beenden, um sauberere Code-Strukturen zu erhalten. Nutze End nur, wenn es wirklich notwendig ist, um alle laufenden Subroutinen sofort zu beenden.

  • Nutze Fortschrittsbalken: Um den Benutzer über den Fortschritt zu informieren, kannst Du einen Fortschrittsbalken implementieren, der während der Berechnung aktualisiert wird.


FAQ: Häufige Fragen

1. Kann ich einen laufenden Prozess auch ohne MsgBox abbrechen?
Ja, Du kannst globale Variablen oder Flags verwenden, um anzugeben, ob das Sub abgebrochen werden soll.

2. Was passiert, wenn ich Exit Sub in einem laufenden Makro verwende?
Exit Sub beendet nur das aktuelle Sub, während End alle laufenden Subroutinen sofort stoppt.

3. Ist es möglich, die MsgBox mit einer anderen Benutzeroberfläche zu ersetzen?
Ja, Du kannst eigene Formulare (UserForms) erstellen, um eine benutzerfreundlichere Oberfläche zu bieten.

4. Welche Excel-Versionen unterstützen VBA?
VBA wird in Excel 2010 und neueren Versionen unterstützt.

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