Dialogfelder (Dialog Boxes) in Excel VBA werden verwendet, um dem Benutzer Informationen anzuzeigen.
Die Funktion MsgBox zeigt eine Meldung in einem Dialogfeld an, wartet darauf, dass der Benutzer auf eine Schaltfläche klickt, und gibt eine Ganzzahl zurück, die angibt, auf welche Schaltfläche der Benutzer geklickt hat.
Der am häufigsten verwendete Dialog ist das Meldungsfeld, wir können aber auch das Eingabefeld verwenden.
Bisher haben wir das Dialogfeld MsgBox verwendet, um Informationen auf dem Bildschirm anzuzeigen.
Sub delete_B2()
    Range("B2").ClearContents
    MsgBox "The contents of B2 have been deleted !"  '„Der Inhalt der Zelle B2 wurde gelöscht!“
End Sub
In diesem Fall wird MsgBox mit nur einem Argument aufgerufen. Sehen Code unten:
 
Jetzt erstellen wir ein Dialogfeld, das zur Bestätigung des Löschens auffordert, bevor die beiden Anweisungen ausgeführt werden. Dann gibt es drei Argumente, die wir verwenden werden:
MsgBox([TEXT], [TASTEN], [TITEL])
Sub delete_B2()
    If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes
    Then
      Range("B2").ClearContents
      MsgBox "The contents of B2 have been deleted !"
    End If
    
End Sub
Ergebnis:
 
Private Sub warning(var_text As String)
    MsgBox "Caution : " & var_text & " !"
End Sub
Sub macro_test()
    If Range("A1") = "" Then
        warning "empty cell"           '„Leere Zelle“
    ElseIf Not IsNumeric(Range("A1")) Then
        warning "non-numerical value"  '„nicht numerischer Wert“
    End If
End Sub
 
vbYesNo gibt an, dass die Dialogschaltflächen „Yes“ und „No“ sind, und vbYes stellt die Schaltfläche „Yes“ dar:
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Wenn die Schaltfläche Yesbl_ gedrückt wird...
| Konstante | Numerischer Wert | Beschreibung | 
|---|---|---|
| vbOKOnly | 0 |  | 
| vbOKCancel | 1 |   | 
| vbAbortRetryIgnore | 2 |    | 
| vbYesNoCancel | 3 |    | 
| vbYesNo | 4 |   | 
| vbRetryCancel | 5 |   | 
| vbCritical | 16 |  | 
| vbQuestion | 32 |  | 
| vbExclamation | 48 |  | 
| vbInformation | 64 |  | 
Hier ist ein Beispiel für MsgBox, das jedes Mal in der Schleife angezeigt wird, bis der Benutzer Yes drückt:
Sub humor()
    Do
        If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then
            Exit Do '=> Antwort Yes = Ja, wir verlassen die Schleife
        End If
    Loop While 1 = 1 '=> Endlosschleife
    MsgBox ";-)"
End Sub
Um ein neues Menüband anzuzeigen, können Sie die Funktion Chr mit Argument 10 verwenden, die für das Verschieben des Menübands verantwortlich ist, zum Beispiel:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Wir erhalten folgendes Ergebnis:
Eine InputBox fordert den Benutzer auf, einen Wert in ein Dialogfeld einzugeben, zum Beispiel:
Sub example()
    Dim result As String
   
    result = InputBox("Text ?", "Title") 'Der Variablen wird der in der InputBox eingegebene Wert zugewiesen
   
    If result <> "" Then 'Wenn der Wert etwas anderes als „“ ist, wird das Ergebnis angezeigt
       MsgBox result
    End If
End Sub
Wir erhalten folgendes Ergebnis:
 
Mit dem dritten Argument kann der Standardwert festgelegt werden:
InputBox("Text ?", "Title", "Default value")
Das Ergebnis ist wie folgt:
