Clever-Excel-Forum

Normale Version: Msgbox mittels X abbrechen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
@RPP63: Ich habe auch nicht  gesagt, dass Du was anderes behauptet hast, aber IMHO fehlen wichtige Hinweise 

Die MsgBox per Userform nachzubauen ist nicht trivial, geschweige denn APIs. Da bevorzuge ich 

Code:
    Dim reply As VbMsgBoxResult
    reply = MsgBox("Ok oder Cancel(=Default)", vbOKCancel + vbDefaultButton2)
Man sollte ein Unterschied machen:

- Messagebox : kann nur abgebrochen werden mittels 'x' oder 'OK'; etwas anderes ist nicht möglich.
   msgbox "Achtung"
   Berwertung des Msgbox Ergebnis ist sinnlos.

- Wahlbox: der User kann ein Wahl machen: weiter('OK'= 1) oder abbrechen ("x' oder 'cancel' =2)

Code:
 if msgbox("Fortfahren ?",1) =1 then
    'tu was
 end if

26865

(15.09.2022, 07:21)RPP63 schrieb: [ -> ]Teste mal:
Kann ich machen, wenn ich einen Rechner habe - was im Moment zum Glück nicht der Fall ist.

vbOKOnly ist doch ein Sonderfall, bei dem keine Auswahl vorgesehen ist. Wer eine Auswahl will, muss mindestens 2 Möglichkeiten anbieten, z. B. vbOkCancel.
Aber es steht ja schon ein entsprechender Code in Beitrag 11.

Möglicherweise habe ich die Anfrage des TE auch nicht richtig aufgenommen…
Zitat:vbOKOnly ist doch ein Sonderfall, bei dem keine Auswahl vorgesehen ist. Wer eine Auswahl will, muss mindestens 2 Möglichkeiten anbieten, z. B. vbOkCancel.
Guter Punkt! Ich habe mich gefragt, warum das X vbOK als Return Wert liefert. Genau deswegen! Es ist keine Auswahl vorgesehen, also sollte die MsgBox immer vbOk liefern, auch wenn man X klickt.
Hallöchen,

man könnte jetzt darüber philosophieren, warum ein X enthalten ist, wenn es keine Differenzierung gibt  Confused
Ich kann mir schon vorstellen, dass es viele User gibt, die erwarten, dass das X einem Abbruch gleicht

Bei einem Userform ist das etwas anders.
Bei einem Button, dem ich ein Unload Me spendiere, kann man einen Code ausführen, der beim einfachen Schließen über das X nicht ausgeführt wird.
Ereignisse wie Terminate oder QueryClose werden dennoch ausgeführt.

Bei den Letzgenannten könnte ich aber eine andere Reaktion auslösen. Wenn nur X gedrückt wurde, müsste ich dafür prüfen, ob nicht doch der Button mit dem Unload Me die Ursache war.

Beim UF geht also im Unterschied zur MsgBox noch etwas mehr ... und ein "einfaches" UF wäre für die Aufgabe entsprechend #1 ausreichend.
Seiten: 1 2