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: