Mehrere MsgBox-Abfragen hintereinander möglich?
Hallo, da hier doch so viele Könner unterwegs sind: Ich hänge schon wieder fest.
Ich habe zwei msg-Boxen vbYesNoCancel. Wenn die erste Box mit Ja bestätigt wird, wird eine Prozedur gestartet.
Wenn ich den Button Abbrechen klicke, soll die zuletzt geöffnete Userform neu geladen und die Sub beendet werden.
Wenn ich den Nein Button klicke öffnet sich die nächste msg Box vbYesNoCancel.
Wenn nun Ja geklickt wird, wird wieder eine Prozedur gestartet, beim Abbrechen wieder die Userform neu geladen und die Sub beendet.
Und bei Nein wird eine weitere Prozedur gestartet.
Eigentlich dürfte es ja nicht schwer sein, aber bei mir hängt es. Die Userform wird neu geladen aber die nächste msg Box öffnet nur und dann passiert nichts, wenn ich dort einen Button klicke.
So sieht es nun aus (und vielen Dank im Voraus):
Public Sub InspectionCriterion()
Dim msg As String, msg2 As String, msg3 As String
msg = MsgBox("Ist das Merkmal ein Gewinde?", vbYesNoCancel + vbQuestion, "")
If msg = vbYes Then
UserFormThread.Show
ElseIf msg = vbNo Then
msg2 = MsgBox("Ist das Merkmal zu messen?", vbYesNoCancel + vbQuestion, "")
ElseIf msg = vbCancel Then
Call InspectionFeatures
Exit Sub
If msg2 = vbYes Then
UserFormDimension.Show
ElseIf msg2 = vbNo Then UserFormText.Show
Else
Exit Sub
End If
End If
End Su
1 Antwort
Wenn die erste Box mit Ja bestätigt wird, wird eine Prozedur gestartet.
Wenn ich den Button Abbrechen klicke, soll die zuletzt geöffnete Userform neu geladen
Hier scheinst du einen Dreher zu haben, denn bei Yes wird eine Userform gestartet und bei Abbrechen eine Prozedur.
Wenn ich den Nein Button klicke öffnet sich die nächste msg Box vbYesNoCancel.
Wenn nun Ja geklickt wird, wird wieder eine Prozedur gestartet, beim Abbrechen wieder die Userform neu geladen und die Sub beendet.
Und bei Nein wird eine weitere Prozedur gestartet.
Auch die Verarbeitung der zweiten Messagebox passt nicht zur Beschreibung.
Bei No wird eine UserForm angezeigt, bei Yes auch und bei Abbrechen die Sub beendet.
- Der Code ab "If msg2 = ..." wird nie erreicht, weil du davor die Prozedur verlässt. Das passiert alles beim Abbrechen der ersten Messagebox.
- Es macht keinen Sinn, unter dem Cancel-Zweig der ersten Messagebox-Ergebnisverarbeitung msgbox2 abzuprüfen, weil diese Variable beim No der ersten Messagebox gesetzt wird. Du müsstest die Abfrage von msgbox2 im No-Fall direkt nach dem Öffnen der Messagebox machen.