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

vbyesno in msgbox

Forumthread: vbyesno in msgbox

vbyesno in msgbox
13.02.2003 11:59:52
ae
hallo zusammen,
mit nachstehendem Code möchte ich abfragen ob die anwendung wirklich beendet werden soll:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
msg = MsgBox("Wollen Sie die Anwendung wirklich beenden ?", vbYesNo, "Anwendung beenden")
MsgBox (msg)
If msg = vbNo Then
Exit Sub
Else
ActiveWorkbook.Save
Application.Quit
End If
End Sub

aber egal, ob ich auf ja oder nein klicke --- die anwendung wird beendet !!

Bin ich denn blind oder blöde oder beides ?
wo liegt denn da der fehler ?

danke für eure hilfe
gruß
ae

Anzeige

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

Betreff
Datum
Anwender
Anzeige
Re: vbyesno in msgbox
13.02.2003 12:05:06
Steffen D

Hallo,

du musst Cancel auf true setzen!

Private Sub Workbook_BeforeClose(Cancel As Boolean)
msg = MsgBox("Wollen Sie die Anwendung wirklich beenden ?", vbYesNo, "Anwendung beenden")
If msg = vbNo Then
Cancel=True
Exit Sub
Else
ActiveWorkbook.Save
'Application.Quit brauchst du nicht da die anwendung sowieso beendet wird
End If
End Sub

Gruß Steffen D

Anzeige
danke ! Das wars ! oT
13.02.2003 12:07:50
ae



Re: vbyesno in msgbox
13.02.2003 12:12:23
felix

Hallo Du Geheimnisvoller ae,
so gehts

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If MsgBox("Wollen Sie die Anwendung wirklich beenden ?", vbYesNo, "Anwendung beenden") _
= vbNo Then
Cancel = True
Exit Sub
Else
ActiveWorkbook.Save
Application.Quit
End If
End Sub

Gruß
Felix

Anzeige
danke o t
13.02.2003 14:22:22
ae



;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

MsgBox mit vbyesno in Excel VBA verwenden


Schritt-für-Schritt-Anleitung

Um eine MsgBox mit der Option vbYesNo in Excel VBA zu verwenden, kannst Du den folgenden Code in das Workbook_BeforeClose-Ereignis einfügen. Dieser Code fragt den Benutzer, ob er die Anwendung wirklich schließen möchte:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim msg As VbMsgBoxResult
    msg = MsgBox("Wollen Sie die Anwendung wirklich beenden?", vbYesNo, "Anwendung beenden")

    If msg = vbNo Then
        Cancel = True
    Else
        ActiveWorkbook.Save
    End If
End Sub

Achte darauf, dass Du Cancel auf True setzt, wenn der Benutzer "Nein" wählt, um das Schließen der Anwendung zu verhindern.


Häufige Fehler und Lösungen

  • Problem: Die Anwendung schließt sich immer, egal ob "Ja" oder "Nein" gewählt wird.
    • Lösung: Stelle sicher, dass Du Cancel = True gesetzt hast, wenn msg = vbNo ist. Der folgende Code zeigt, wie dies korrekt gemacht wird:
If msg = vbNo Then
    Cancel = True
    Exit Sub
End If
  • Problem: Die MsgBox zeigt nicht die richtigen Optionen.
    • Lösung: Überprüfe, ob Du vbYesNo korrekt in der MsgBox verwendet hast.

Alternative Methoden

Du kannst auch alternative MsgBox-Typen verwenden, wie vbOKCancel, um andere Auswahlmöglichkeiten anzubieten. Der Code würde dann so aussehen:

Dim msg As VbMsgBoxResult
msg = MsgBox("Wollen Sie die Anwendung wirklich beenden?", vbOKCancel, "Anwendung beenden")

Hier kannst Du das Verhalten entsprechend anpassen, indem Du die Antwort auf die vbOK- oder vbCancel-Option überprüfst.


Praktische Beispiele

Hier ist ein Beispiel, wie man die MsgBox für verschiedene Szenarien verwenden kann:

  1. Beenden der Anwendung:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim msg As VbMsgBoxResult
    msg = MsgBox("Wollen Sie die Anwendung wirklich beenden?", vbYesNo, "Anwendung beenden")

    If msg = vbNo Then
        Cancel = True
    Else
        ActiveWorkbook.Save
    End If
End Sub
  1. Warnung vor dem Löschen:
If MsgBox("Möchten Sie dieses Element wirklich löschen?", vbYesNo + vbQuestion, "Löschen bestätigen") = vbYes Then
    ' Löschvorgang hier
End If

Tipps für Profis

  • Nutze Konstanten wie vbYes und vbNo anstelle von Zahlen, um den Code lesbarer zu gestalten.
  • Wenn Du mehrere Bedingungen überprüfen möchtest, verwende Select Case, um die Logik zu vereinfachen.
  • Du kannst die MsgBox auch anpassen, indem Du ein benutzerdefiniertes Icon verwendest. Beispiel:
msg = MsgBox("Wollen Sie die Anwendung wirklich beenden?", vbYesNo + vbCritical, "Anwendung beenden")

FAQ: Häufige Fragen

1. Wie kann ich die MsgBox anpassen?
Du kannst verschiedene Parameter verwenden, um das Verhalten und das Erscheinungsbild der MsgBox anzupassen, wie Icons und Schaltflächen.

2. Was passiert, wenn ich Cancel nicht setze?
Wenn Du Cancel nicht setzt, wird die Anwendung immer geschlossen, unabhängig von der Benutzerwahl.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige