Ja Nein Message Box (Msgbox) - VBA-Codebeispiele

In diesem Tutorial wird beschrieben, wie Sie die VBA-MsgBox-Funktion verwenden, um Benutzern Messageboxen anzuzeigen (einschließlich der YesNo Messagebox). Vielleicht interessiert Sie auch unser Artikel zu InputBoxen.

VBA MsgBox-Funktion

In VBA ist es einfach, eine einfache MsgBox anzuzeigen:

1 MsgBox "Dies ist eine Nachrichtenbox"

Sie können jedoch noch viel mehr tun, als nur ein einfaches OK-Meldungsfeld anzuzeigen. Schauen wir uns schnell ein kompliziertes Beispiel an, bevor wir in die Einzelheiten eintauchen…

VBA YesNo Message Box

Unten erstellen wir eine Nachrichtenbox mit:

  • Ein Titel „Message Box Title“ und eine Aufforderung „Text“
  • Ein Fragezeichen-Symbol
  • Ja / Nein-Optionen anstelle eines einfachen „OK“
  • Standardtaste = „Nein“
123 Dim answer As Integeranswer = MsgBox("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Nachrichtenfeldtitel")

Die Messagebox gibt je nach Wahl des Benutzers vbYes oder vbNo zurück. Je nach Auswahl können Sie dann verschiedene Aktionen ausführen:

12345 Wenn Antwort = vbJa DannMsgBox "Ja"AndersMsgBox "Nein"Ende Wenn

Im nächsten Abschnitt zeigen wir Ihnen alle Möglichkeiten, die Ihnen beim Erstellen von Nachrichtenboxen zur Verfügung stehen. Anschließend führen wir Sie in die Syntax der MsgBox-Funktion ein und gehen abschließend noch weitere Message-Box-Beispiele durch.

VBA-Nachrichtenfeldoptionen

Schauen Sie sich das Bild unten an. Hier sehen Sie (fast) alle Möglichkeiten, die Ihnen beim Erstellen von Nachrichtenboxen zur Verfügung stehen. Beachten Sie die Symbole und die verschiedenen Schaltflächen.

Dies ist ein Screenshot des „MessageBox Builder“ aus unserem Premium VBA Add-In: AutoMacro. Mit dem MessageBox Builder können Sie schnell Ihre gewünschte Messagebox gestalten und den Code in Ihr Codemodul einfügen. Es enthält auch viele andere Code-Builder, eine umfangreiche VBA-Codebibliothek und eine Auswahl an Codierungstools. Es ist ein Muss für jeden VBA-Entwickler.

Syntax der MsgBox-Funktion

MsgBox( Eingabeaufforderung [, Schaltflächen ] [, Titel] [, Hilfedatei, Kontext] )

Aufforderung (erforderlich) - Dies ist der primäre Meldungsfeldtext.

Tasten - Wählen Sie aus, welche Schaltflächen angezeigt werden sollen. Wenn es weggelassen wird, "OKonly". Hier können Sie auch das anzuzeigende Symbol und die Standardschaltfläche festlegen.

Titel - Der Titel oben im Nachrichtenfeld. Ohne Angabe wird der Name der aktuellen Anwendung angezeigt (zB Microsoft Excel).

Hilfedatei - Geben Sie die Hilfedatei an, auf die zugegriffen werden kann, wenn der Benutzer auf die Schaltfläche "Hilfe" klickt. Wenn angegeben, müssen Sie auch Kontext hinzufügen (unten).

Kontext - Numerischer Ausdruck, der die dem entsprechenden Hilfethema zugewiesene Hilfekontextnummer darstellt.

Sie können die Argumente helpfile und context wahrscheinlich ignorieren. Ich habe sie noch nie benutzt gesehen.

Titel und Aufforderung des Nachrichtenfelds anpassen

Mit der MsgBox-Funktion können Sie den Titel und die Aufforderungsnachrichten wie folgt anpassen:

1 Msgbox "Aufforderung", "Titel"

Ein anderes Beispiel:

123 Sub MsgBoxPromptTitle()MsgBox "Schritt 1 abgeschlossen. Klicken Sie auf OK, um Schritt 2 auszuführen", "Schritt 1 von 5"End Sub

Wichtig! Denken Sie daran, Ihren Text in Anführungszeichen zu setzen.

MessageBox LineBreaks

Sie können mit „vbNewLine“ auch Zeilenumbrüche zu Ihren Eingabeaufforderungen in Meldungsfeldern hinzufügen.

123 Sub MsgBoxPromptTitle_NewLine()MsgBox "Schritt 1 abgeschlossen." & vbNewLine & "Klicken Sie auf OK, um Schritt 2 auszuführen", , "Schritt 1 von 5"End Sub

Beachten Sie, dass wir das &-Symbol verwenden, um Text miteinander zu verbinden. In unserem Artikel zum Verbinden von Text erfahren Sie mehr über die Verwendung von & mit Text und anderen Optionen zum Einfügen von Zeilenumbrüchen.

MsgBox-Symbole

VBA bietet Ihnen die Möglichkeit, Ihren Nachrichtenfeldern eines von vier vorgefertigten Symbolen hinzuzufügen:

Symbolkonstante Symbol
vbInformationen
vbCritical
vbFrage
vbExclamation

Die Icon-Konstante sollte innerhalb des Button-Arguments platziert werden:

123 Sub MsgBoxQuestionIcon()MsgBox "Fragebeispiel", vbQuestionEnd Sub

Dadurch wird das standardmäßige „OK“-Meldungsfeld mit dem Fragesymbol generiert:

Beachten Sie, wie Ihnen der VBA-Editor bei der Eingabe die verfügbaren Optionen anzeigt:

Dies ist hilfreich, da Sie sich nicht die genaue Syntax oder Namen von Symbolen oder Schaltflächen merken müssen.

Jetzt werden wir jedes Meldungsfeldsymbol demonstrieren:

MsgBox-Symbole - Informationen

123 Sub MsgBoxInformationIcon()MsgBox "Informationsbeispiel", vbInformationEnd Sub

MsgBox-Symbole - Kritisch

123 Sub MsgBoxCriticalIcon()MsgBox "Kritisches Beispiel", vbCriticalEnd Sub

MsgBox-Symbole - Frage

123 Sub MsgBoxQuestionIcon()MsgBox "Fragebeispiel", vbQuestionEnd Sub

MsgBox-Symbole - Ausrufezeichen

123 Sub MsgBoxExclamationIcon()MsgBox "Ausrufebeispiel", vbExclamationEnd Sub

Im Folgenden werden wir über das Generieren von Meldungsfeldern mit unterschiedlichen Schaltflächenlayouts sprechen. Wenn Sie einen anderen Nachrichtenboxtyp wählen, müssen Sie den Symboltyp mit einem „+“ hinter den Schaltflächen anhängen:

123 Sub MsgBoxQuestionIcon()MsgBox "Möchten Sie fortfahren?", vbOKCancel + vbQuestionEnd Sub

MsgBox-Variablen

Bisher haben wir hauptsächlich mit der standardmäßigen „OK“-Meldungsbox gearbeitet. Die OK-Meldungsbox hat nur eine Option: Durch Drücken von „OK“ wird der Code fortgesetzt. Sie können jedoch auch andere Tastengruppierungen festlegen: OK / Abbrechen, Ja / Nein usw.

In diesem Fall möchten Sie je nach gedrückter Taste verschiedene Aktionen ausführen. Schauen wir uns ein Beispiel an.

Hier ist das Nachrichtenfeld, das wir generieren werden:

Dies ist der gesamte Code (wir werden ihn als nächstes aufschlüsseln):

123456789101112 Sub MsgBoxVariable()Dim answer As Integeranswer = MsgBox("Möchten Sie fortfahren?", vbQuestion + vbYesNo)Wenn Antwort = vbJa DannMsgBox "Ja"AndersMsgBox "Nein"Ende WennEnd Sub

Zuerst weisen wir die Ausgabe der Messagebox einer Integer-Variablen zu.

123 Dim answer As Integeranswer = MsgBox("Möchten Sie fortfahren?", vbQuestion + vbYesNo)

Als nächstes verwenden wir ein If-Else, um zu bestimmen, was basierend auf der gedrückten Schaltfläche zu tun ist:

12345 Wenn Antwort = vbJa DannMsgBox "Ja"AndersMsgBox "Nein"Ende Wenn

Die MsgBox-Funktion gibt einen ganzzahligen Wert (zwischen 1 und 7) zurück, sodass wir die Variable als ganzzahligen Typ definieren. Anstatt sich auf die ganze Zahl zu beziehen, können Sie sich jedoch auf eine Konstante beziehen (z. B. vbOK, vbCancel usw.). Sehen Sie sich diese Tabelle an, um alle Optionen zu sehen:

Taste Konstante Wert
OK vbOK 1
Abbrechen vbAbbrechen 2
Abbrechen vbAbort 3
Wiederholen vbWiederholen 4
Ignorieren vbIgnorieren 5
Jawohl vbJa 6
Nein vbNein 7

Jetzt werden wir jede Schaltflächengruppierung demonstrieren:

OK-Nachrichtenbox - vbOKOnly

Dies ist die Standard-VBA-Messagebox.

123456 Sub MsgBox_OKOnly()Dim answer As Integeranswer = MsgBox("OKOnly Beispiel", vbOKOnly)End Sub

OK Nachrichtenbox abbrechen - vbOKCancel

123456789101112 Sub MsgBox_OKCancel()Dim answer As Integeranswer = MsgBox("OK Cancel Beispiel", vbOKCancel)Wenn Antwort = vbOK DannMsgBox "OK"AndersMsgBox "Abbrechen"Ende WennEnd Sub

Ja Nein Nachrichtenbox - vbYesNo

123456789101112 Sub MsgBox_YesNo()Dim answer As Integeranswer = MsgBox("Ja Nein Beispiel", vbJaNein)Wenn Antwort = vbJa DannMsgBox "Ja"AndersMsgBox "Nein"Ende WennEnd Sub

Ja Nein Nachrichtenbox abbrechen - vbYesNoCancel

1234567891011121314 Sub MsgBox_YesNoCancel()Dim answer As Integeranswer = MsgBox("Yes No Cancel Example", vbYesNoCancel)Wenn Antwort = vbJa DannMsgBox "Ja"ElseIf answer = vbNo ThenMsgBox "Nein"AndersMsgBox "Abbrechen"Ende WennEnd Sub

Abort Retry Ignore Message Box - vbAbortRetryIgnore

1234567891011121314 Sub MsgBox_AbortRetryIgnore()Dim answer As Integeranswer = MsgBox("Abort Retry Ignore Example", vbAbortRetryIgnore)Wenn Antwort = vbAbort ThenMsgBox "Abbruch"ElseIf answer = vbRetry ThenMsgBox "Wiederholen"AndersMsgBox "Ignorieren"Ende WennEnd Sub

Meldungsfeld zum erneuten Abbrechen - vbRetryCancel

123456789101112 Sub MsgBox_RetryCancel()Dim answer As Integeranswer = MsgBox("Beispiel für Wiederholungsabbruch", vbRetryCancel)Wenn Antwort = vbRetry ThenMsgBox "Wiederholen"AndersMsgBox "Abbrechen"Ende WennEnd Sub

VBA MessageBox-Beispiele

Bestätigung des Meldungsfelds vor dem Ausführen des Makros

Dieser Code zeigt ein Ja-Nein-Meldungsfeld an, bevor ein Makro aufgerufen wird. Wenn auf Ja geklickt wird, wird das Makro aufgerufen, wenn auf Nein geklickt wird, wird das Makro nicht ausgeführt.

12345678 Sub Msgbox_BeforeRunning()Dim answer As Integeranswer = MsgBox("Möchten Sie Makro1 ausführen?", vbQuestion + vbYesNo)Wenn Antwort = vbJa, dann Makro1 aufrufenEnd Sub

Ja / Nein Nachrichtenbox - Beenden Unter

Hier bestätigen wir mit dem Benutzer, ob ein Makro weiterhin ausgeführt werden soll. Wenn Nein geklickt wird, verlässt der Code das Sub, andernfalls wird der Vorgang fortgesetzt.

12345678910 Sub Msgbox_BeforeRunning()Dim answer As Integeranswer = MsgBox("Möchten Sie fortfahren?", vbQuestion + vbYesNo)Wenn Antwort = vbNein, dann Exit Sub'Irgendein CodeEnd Sub

VBA-Meldungsfeld in Access VBA

Alle oben genannten Beispiele funktionieren in Access VBA genauso wie in Excel VBA.

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave