Naja, das geht zwar. Aber Visible ist hier suboptimal, weil dadurch das Userform neu geladen wird um diese Eigenschaft abfragen zu können. Wenn das Form ein Initialize-Ereignis hat wird dieses erneut ausgeführt und das Form muss dann auch wieder entladen werden.
Das Problem ist übrigens ein Klassiker. Auch ich habe vor Jahren Stunden mit der Lösungssuche verbracht bis ich seinerzeit auf die Möglichkeit von globalen Variablen gestoßen bin. Was du brauchst ist genau eine solche, in die du reinschreibst, dass du das Formular abgebrochen hast. Die darf aber nicht genauso heißen wie der Userformbutton, sonst hängst du in einer Dauerschleife.
Code im allgemeinen Modul
Public Canceled As Boolean
Sub Test()
Userform1.Show
If Canceled = True Then
GoTo Beendet
Else
End If
Exit Sub
Beendet:
MsgBox "Test"
End Sub
Code im Userform
Private Sub Abbruch_Click()
'Übernahme = 0 ' Diese Variable wollte ich ers im Makro verwerten, funktioniert aber auch nicht.
Canceled = True
Unload Userform1
End Sub
PS: Goto verwendet man heutzutage nur noch im Zusammenhang mit On Error. Für andere Sachen heißt es Bedingung richtig definieren, Subs verwenden und im Notfall Exit Sub ausführen. Ist aber letztendlich eine Geschmackssache.
Gruß Mr. K.
|