Wie beende ich die Codeausführung, wenn in einer UserForm
auf «abbrechen» gedrückt wurde?
Wie beendet man richtig?
mit freundlichen Grüßen,
Max Seitl
Wie beendet man richtig?
mit freundlichen Grüßen,
Max Seitl
hast Du ein CommandButton Abbrechen dan schreibe dort nur End
oder willst Du verhindern das jemand das X in der Userform drückt. Dann folgenden Code in die Userform.
vergesse aber nicht den endeButton in der Userform.
Gruß Hajo
So könntest Du in cmdAbbrechen_Click das so machen:
Me.Tag = "Abbrechen"
Me.Hide
Und bei Ok:
Me.Tag = "Ok"
Me.Hide
Und in Deinem Hauptprogramm kannst Du das Tag auslesen:
Select Case frmSaveAs.Tag
Case "Abbrechen"
MsgBox "Abbruch"
Case "Ok"
MsgBox "Abbruch"
End Select
Unload frmSaveAs
Die Frage ist einfach, wie verarbeite ich das Click-Ereignis weiter,
oder kann ich in dem Zusammenhang mit ...Application.Caller ... irgendetwas ausrichten?
mit freundlichen Grüßen,
Max Seitl
so wie ich schon geschrieben habe
ersetzte
Unload Me
durch
end
Gruß Hajo
Um eine Prozedur in Excel VBA zu beenden, wenn der Benutzer auf die Abbrechen-Schaltfläche (Cancel Button) in einer UserForm klickt, kannst du folgende Schritte befolgen:
Erstelle eine UserForm mit einem CommandButton für den Abbruch.
Füge den folgenden Code in die UserForm ein:
Private Sub cmdAbbrechen_Click()
Me.Tag = "Abbrechen"
Me.Hide
End Sub
Private Sub cmdOK_Click()
Me.Tag = "Ok"
Me.Hide
End Sub
Verarbeite das Ergebnis in deiner Hauptprozedur:
Sub HauptProzedur()
Dim frm As UserForm
Set frm = New UserForm
frm.Show
Select Case frm.Tag
Case "Abbrechen"
MsgBox "Die Aktion wurde abgebrochen."
Exit Sub ' Prozedur abbrechen
Case "Ok"
MsgBox "Aktion erfolgreich."
End Select
Unload frm
End Sub
Mit diesem Code kannst du sicherstellen, dass die vba prozedur abbrechen
wird, wenn der Benutzer die Abbrechen-Schaltfläche drückt.
Fehler: UserForm schließt sich, aber Prozedur läuft weiter.
Exit Sub
in den entsprechenden Select Case
-Anweisungen verwendest.Fehler: Tag wird nicht richtig gesetzt.
Alternativ kannst du auch den Unload Me
Befehl verwenden, aber in diesem Fall wird die Prozedur nicht sofort beendet. Um sicherzustellen, dass die vba aktion abbrechen
, kannst du die Prozedur in der UserForm selbst beenden:
Private Sub cmdAbbrechen_Click()
Unload Me
End ' Beendet die gesamte Prozedur
End Sub
Dies kann nützlich sein, wenn du die UserForm ohne zusätzliche Logik schließen möchtest.
Hier ist ein einfaches Beispiel, wie du die UserForm mit einer Abbrechen-Schaltfläche einrichten kannst:
UserForm erstellen: Füge zwei CommandButtons hinzu – einen für "OK" und einen für "Abbrechen".
Code für die Buttons:
Private Sub cmdAbbrechen_Click()
Me.Tag = "Abbrechen"
Me.Hide
End Sub
Private Sub cmdOK_Click()
Me.Tag = "Ok"
Me.Hide
End Sub
Hauptprozedur:
Sub BeispielProzedur()
Dim frm As New UserForm
frm.Show
If frm.Tag = "Abbrechen" Then
MsgBox "Prozedur wird abgebrochen."
Exit Sub
End If
MsgBox "Aktion erfolgreich abgeschlossen."
End Sub
Application.Caller
-Eigenschaft, um herauszufinden, welcher Button gedrückt wurde.Cancel
-Eigenschaft des CommandButtons auf True
setzen, um die Standardverhalten bei Drücken der ESC-Taste zu nutzen.excel vba abbrechen
Logik implementiert hast.1. Wie kann ich die UserForm schließen, ohne den Code zu beenden?
Verwende einfach Unload Me
und stelle sicher, dass die Logik im Hauptprogramm entsprechend angepasst ist.
2. Was passiert, wenn ich die Esc-Taste drücke?
Wenn du die Cancel
-Eigenschaft der Abbrechen-Schaltfläche auf True
setzt, wird die UserForm geschlossen und das Click-Ereignis wird ausgelöst, als ob der Button geklickt wurde.
Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden
Suche nach den besten AntwortenEntdecke unsere meistgeklickten Beiträge in der Google Suche
Top 100 Threads jetzt ansehen