Rückkehr in VBA-Code-Beispiele

VBA – Ja Nein Message Box (MsgBox)

In diesem Tutorial erfahren Sie, wie Sie die VBA-Funktion MsgBox verwenden können, um Benutzern Meldungen in einem Dialogfeld anzuzeigen (einschließlich eines Ja-Nein-Meldungsfeldes). Vielleicht haben Sie auch an unserem Artikel über InputBoxen Interesse.

VBA MsgBox Funktion

In VBA ist es einfach, ein einfaches Meldungsfeld anzuzeigen:

MsgBox "Dies ist eine Messagebox"

Dialogfeld einfache msgbox

 

Es ist noch wesentlich mehr möglich, als nur ein einfaches OK-Meldungsfeld anzuzeigen. Schauen wir uns kurz ein kompliziertes Beispiel an, bevor wir uns mit dessen Einzelheiten befassen…

VBA Ja-Nein-MessageBox

Im Folgenden erstellen wir ein Dialogfeld mit:

  • einem Titel „Message Box Titel“ und einer Eingabeaufforderung „Text“
  • einem Fragezeichen-Symbol
  • Ja/Nein-Optionen anstelle eines einfachen „OK“
  • Standard-Schaltfläche = ‚Nein‘
Dim Antwort As Integer

Antwort = MsgBox("Text", vbQuestion + vbYesNo + vbDefaultButton2, "Message Box Titel")

Ja Nein Dialogfeld

 

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

If Antwort = vbYes Then
  MsgBox "Ja"
Else
  MsgBox "Nein"
End If

Im nächsten Abschnitt zeigen wir Ihnen alle Möglichkeiten, die Ihnen bei der Erstellung von Nachrichtenfeldern zur Verfügung stehen. Dann werden wir Sie in die Syntax der MsgBox-Funktion einführen und schließlich weitere Beispiele für Meldungsboxen durchgehen.

VBA Message Box Optionen

Werfen Sie einen Blick auf das folgende Bild. Hier sehen Sie (fast) alle Optionen, die Ihnen bei der Erstellung von Meldungsfeldern zur Verfügung stehen. Beachten Sie die Icons und die verschiedenen Schaltflächen.

vba write messagebox code

Dies ist ein Screenshot des „MessageBox Builders“ aus unserem Premium VBA Add-in: AutoMacro. Mit dem MessageBox Builder können Sie Ihre gewünschte MessageBox schnell entwerfen und den Code in Ihr Codemodul einfügen. Er enthält auch viele andere Code-Builder, eine umfangreiche VBA-Code-Bibliothek und eine Reihe von Codierungswerkzeugen. Es ist ein Muss für jeden VBA-Entwickler.

Syntax der MsgBox-Funktion

MsgBox( prompt [, buttons ] [, title ] [, helpfile, context ] )

prompt (erforderlich) – Dies ist der primäre Text des Nachrichtenfeldes und fordert den Nutzer zu einer Eingabe auf.

buttons – Wählen Sie, welche Schaltflächen angezeigt werden sollen. Wenn nicht angegeben, ‚OKonly‘. Hier können Sie auch angeben, welches Symbol angezeigt werden soll und welche Standardschaltflächen zur Verfügung stehen.

title – Der Titel am oberen Rand des Meldungsfeldes. Wird er weggelassen, wird der Name der aktuellen Anwendung angezeigt (z. B. Microsoft Excel).

helpfile – Geben Sie die Hilfedatei an, die aufgerufen werden kann, wenn der Benutzer auf die Schaltfläche „Hilfe“ klickt. Wenn angegeben, müssen Sie auch den Kontext hinzufügen (siehe unten)

context – Numerischer Ausdruck, der die Nummer des Hilfekontexts angibt, der dem entsprechenden Hilfethema zugeordnet ist.

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

Titel und Eingabeaufforderung der Messagebox anpassen

Mit dem Befehl MsgBox können Sie den Titel und die Eingabeaufforderung wie folgt anpassen:

Msgbox "Eingabeaufforderung",, "Titel"

Ein anderes Beispiel:

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

msgbox prompt title

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

MessageBox Zeilenumbrüche

Mit ‚vbNewLine‘ können Sie in Ihre MessageBox-Eingabeaufforderungen Zeilenumbrüche einfügen.

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

msgbox prompt title neue Zeile

Beachten Sie, dass wir das Symbol & verwenden, um Texte miteinander zu verbinden. Weitere Informationen zur Verwendung von & mit Text und anderen Optionen zum Einfügen von Zeilenumbrüchen finden Sie in unserem Artikel über das Verbinden von Text.

 

MsgBox Icons

VBA bietet Ihnen die Möglichkeit, eines von vier vorgefertigten Icons zu Ihren Meldungsfeldern hinzuzufügen:

Icon Konstante Icon
vbInformation vba information msgbox icon
vbCritical vba critical msgbox icon
vbQuestion vba question msgbox icon
vbExclamation vba exclamation msgbox icon

Die Icon-Konstante sollte im Argument der Schaltfläche (buttons) platziert werden:

Sub MsgBoxQuestionIcon()
    MsgBox "Frage Beispiel", vbQuestion
End Sub

Dieser Code generiert ein Standard Meldungsfeld mit OK-Schaltfläche und einem Fragezeichen-Symbol:

MsgBox Frage Beispiel

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

Dies ist hilfreich, weil Sie sich nicht an die genaue Syntax oder die Namen der Symbole und Schaltflächen erinnern müssen.

Im Folgenden werden sämtliche Symbole für Nachrichtenfelder gezeigt:

MsgBox-Symbole – Informationen

Sub MsgBoxInformationIcon()
    MsgBox "Information Beispiel", vbInformation
End Sub

MsgBox Icons Information

MsgBox-Symbole – Kritisch

Sub MsgBoxCriticalIcon()
    MsgBox "Kritisch Beispiel", vbCritical
End Sub

MsgBox Icons Kritisch

MsgBox Icons – Frage

Sub MsgBoxQuestionIcon()
    MsgBox "Frage Beispiel", vbQuestion
End Sub

MsgBox Icons Frage

MsgBox-Symbole – Ausruf

Sub MsgBoxExclamationIcon()
    MsgBox "Ausruf-Beispiel", vbExclamation
End Sub

MsgBox Icons Ausruf

Es folgt ein Beispiel zur Erstellung von Meldungsfeldern mit verschiedenen Schaltflächenlayouts. Wenn Sie einen anderen Messagebox-Typ wählen, müssen Sie den Icon-Typ mit einem „+“ hinter dem Befehl für die Schaltflächen hängen:

Sub MsgBoxQuestionIcon()
    MsgBox "Möchten Sie fortfahren?", vbOKCancel + vbQuestion
End Sub

MsgBox Icons okCancel Frage

MsgBox-Variablen

Bisher haben wir hauptsächlich mit dem Standard Meldungsfeld „OK“ gearbeitet. Das OK-Meldungsfeld stellt nur eine Auswahlmöglichkeit zur Verfügung: Wenn Sie auf „OK“ klicken, wird der Code fortgesetzt.  Sie können Ihrem Benutzer jedoch auch andere Schaltflächengruppierungen zur Verfügung stellen: OK / Abbrechen, Ja / Nein, usw.

In diesen Fällen ist das Ziel für jede Auswahl durch den Nutzer, eine jeweils andere Aktion ausführen zu lassen. Schauen wir uns ein Beispiel an.

Hier ist das Nachrichtenfeld, das wir erzeugen möchten:

vba message box variablen

 

Dies ist der gesamte Code (brechen wir ihn herunter):

Sub MsgBoxVariable()

Dim Antwort As Integer
Antwort = MsgBox("Möchten Sie fortfahren?", vbQuestion + vbYesNo)

    If Antwort = vbYes Then
        MsgBox "Ja"
    Else
        MsgBox "Nein"
    End If

End Sub

Zunächst weisen wir die Ausgabe der Messagebox einer Integer-Variablen zu.

Dim Antwort As Integer

Antwort = MsgBox("Möchten Sie fortfahren?", vbQuestion + vbYesNo)

Als Nächstes verwenden wir eine If-Else-Verzweigung, um zu bestimmen, was bei jeder Schaltflächen-betätigung passieren soll:

If Antwort = vbYes Then
    MsgBox "Ja"
Else
    MsgBox "Nein"
Ende Wenn

Die Funktion MsgBox gibt einen Integer-Wert (zwischen 1-7) zurück, also definieren wir die Variable als Integer-Typ.  Anstatt auf die Ganzzahl zu verweisen, können Sie jedoch auch auf eine Konstante verweisen (z. B. vbOK, vbCancel, usw.).  In der folgenden Tabelle finden Sie alle Optionen:

Schaltfläche Konstante Wert
OK vbOK 1
Abbrechen vbCancel 2
Beenden vbAbort 3
Wiederholen vbRetry 4
Ignorieren vbIgnore 5
Ja vbYes 6
Nein vbNo 7

Sowohl für die Konstante vbCancel als auch vbAbort werden die Schaltflächen in der deutschen Version von MS Excel beide Male mit „Abbrechen“ übersetzt. Um die Zuordnung zu erleichtern, wird in diesem Artikel die Schaltfläche, der die Konstante vbAbort zugeordnet ist, mit „Beenden“ übersetzt. Die Bildausschnitte werden jedoch entsprechend der Realität mit „Abbrechen“ beschriftet bleiben.

Im Folgenden werden alle möglichen Schaltflächengruppierungen vorgestellt:

OK Meldungsfeld – vbOKOnly

MsgBox vbOKOnly

Dies ist die Standard VBA Meldungsbox.

Sub MsgBox_OKOnly()

Dim Antwort As Integer
Antwort = MsgBox("OK Only Beispiel", vbOKOnly)

End Sub

OK Abbruch Meldungsfeld – vbOKCancel

MsgBox vbOKCancel

Sub MsgBox_OKCancel()

Dim Antwort As Integer
Antwort = MsgBox("OK Abbrechen Beispiel", vbOKCancel)

  If Antwort = vbOK Then
    MsgBox "OK"
  Else
    MsgBox "Abbrechen"
  End If

End Sub

Ja Nein Meldungsfeld – vbYesNo

MsgBox vbYesNo

Sub MsgBox_JaNein()

Dim Antwort As Integer
Antwort = MsgBox("Ja Nein Beispiel", vbYesNo)

    If Antwort = vbYes Then
        MsgBox "Ja"
    Else
        MsgBox "Nein"
    End If

End Sub

Ja Nein Abbruch Meldungsfeld – vbYesNoCancel

MsgBox vbYesNoCancel

Sub MsgBox_JaNeinAbbrechen()

Dim Antwort As Integer
Antwort = MsgBox("Ja Nein Abbruch Beispiel", vbYesNoCancel)

    If Antwort = vbYes Then
        MsgBox "Ja"
    ElseIf Antwort = vbNo Then
        MsgBox "Nein"
    Else
        MsgBox "Abbruch"
    End If

End Sub

Beenden Wiederholen Ignorieren Meldung – vbAbortRetryIgnore

MsgBox vbAbortRetryIgnore

Der Schaltfläche „Abbrechen“ ist die Konstante vbAbort zugeordnet. Siehe Tabelle oben.

Sub MsgBox_AbortRetryIgnore()

Dim Antwort As Integer
Antwort = MsgBox("Beenden Wiederholen Ignorieren Beispiel", vbAbortRetryIgnore)

    If Antwort = vbAbort Then
        MsgBox "Beenden (Abbrechen)"
    ElseIf Antwort = vbRetry Then
        MsgBox "Wiederholen"
    Else
        MsgBox "Ignorieren"
    End If

End Sub

Wiederholen Abbrechen Meldungsfeld – vbRetryCancel

MsgBox vbRetryCancel

Sub MsgBox_RetryCancel()

Dim Antwort As Integer
Antwort = MsgBox("Wiederholen Abbrechen Beispiel", vbRetryCancel)

    If Antwort = vbRetry Then
        MsgBox "Wiederholung"
    Else
        MsgBox "Abbrechen"
    End If

End Sub

VBA MessageBox Beispiele

 

MessageBox Bestätigung vor der Ausführung eines Makros

Mit diesem Code wird vor dem Aufruf eines Makros ein Ja-Nein-Meldungsfeld angezeigt. Wenn Ja angeklickt wird, wird das Makro aufgerufen, wenn Nein angeklickt wird, wird das Makro nicht ausgeführt.

Sub Msgbox_BeforeRunning()

  Dim Antwort As Integer
  Antwort = MsgBox("Möchten Sie Makro1 ausführen?", vbQuestion + vbYesNo)

  If Antwort = vbYes Then Call Makro1

End Sub

MsgBox bestätigung bevor Makro1

Ja / Nein Meldungsfeld – Exit Sub

Hier lassen wir den Benutzer bestätigen, ob mit der Ausführung eines Makros fortgefahren werden soll. Wenn Nein angeklickt wird, verlässt der Code die Sub, andernfalls wird die Prozedur fortgesetzt.

Sub Msgbox_BeforeRunning()

  Dim Antwort As Integer
  Antwort = MsgBox("Möchten Sie fortfahren?", vbQuestion + vbYesNo)

  If Antwort = vbNo Then Exit Sub

  'Beliebiger Code

End Sub

MsgBox Exit Sub

VBA-Meldungsfeld in Access VBA

Alle oben genannten Beispiele funktionieren in Access VBA genau so wie in Excel VBA.

MsgBox Access