Die sehr simpel erscheinende MessageBox hat bei näherer Betrachtung einiges an Möglichkeiten zu bieten. Hier ein ganz normalerMessageBox-Aufruf:
Abbildung - Einfache MessageBox
An benannten Argumenten können dem Messagebox-Aufruf mitgegeben werden:
Argument | Beschreibung | Status | Voreinstellung |
---|---|---|---|
prompt | Die anzuzeigende Meldung | Notwendig | |
buttons | Die anzuzeigenden Schaltflächen, das anzuzeigende Symbol, die Bindung und die Vorgabe der Standardschaltfläche | Optional | OK |
title | Der Text in der blauen Kopfzeile der Meldung | Optional | |
helpfile | Der Dateiname mit Pfad der aufzurufenden Hilfedatei | Optional | |
context | Die Context-Nummer, mit der auf die Hilfedatei zugegriffen wird | Optional |
Klicken Sie in der nachfolgenden Tabelle auf die jeweilige Konstante und es wird ein Beispiel für deren Einsatz im MessageBox-Codeangezeigt:
Konstante | Wert | Beschreibung |
---|---|---|
vbOKOnly | 0 | Nur die Schaltfläche OK anzeigen. |
vbOKCancel | 1 | Schaltflächen OK und Abbrechen anzeigen. |
vbAbortRetryIgnore | 2 | Schaltflächen Abbruch, Wiederholen und Ignorieren anzeigen. |
VbYesNoCancel | 3 | Schaltflächen Ja, Nein und Abbrechen anzeigen. |
VbYesNo | 4 | Schaltflächen Ja und Nein anzeigen. |
VbRetryCancel | 5 | Schaltflächen Wiederholen und Abbrechen anzeigen. |
VbCritical | 16 | Meldung mit Stop-Symbol anzeigen. |
VbQuestion | 32 | Meldung mit Fragezeichen-Symbol anzeigen. |
VbExclamation | 48 | Meldung mit Ausrufezeichen-Symbol anzeigen. |
VbInformation | 64 | Meldung mit Info-Symbol anzeigen. |
VbDefaultButton1 | 0 | Erste Schaltfläche ist Standardschaltfläche. |
VbDefaultButton2 | 256 | Zweite Schaltfläche ist Standardschaltfläche. |
VbDefaultButton3 | 512 | Dritte Schaltfläche ist Standardschaltfläche. |
VbDefaultButton4 | 768 | Vierte Schaltfläche ist Standardschaltfläche. |
VbApplicationModal | 0 | An die Anwendung gebunden. Der Benutzer muß auf das Meldungsfeld reagieren, bevor er seine Arbeit mit der aktuellen Anwendung fortsetzen kann. |
VbSystemModal | 4096 | An das System gebunden. Alle Anwendungen werden unterbrochen, bis der Benutzer auf das Meldungsfeld reagiert. |
vbMsgBoxHelpButton | 16384 | Fügt der MessageBox eine Hilfe-Schaltfläche hinzu |
VbMsgBoxSetForeground | 65536 | Platziert die MessageBox im Vordergrund |
vbMsgBoxRight | 524288 | Der Text wird linksbündig ausgerichtet |
vbMsgBoxRtlReading | 1048576 | Legt die Schreibrichtung des Textes von links nach rechts für arabisches und jüdisches System fest |
Die erste Gruppe von Werten (0-5) beschreibt die Anzahl und den Typ der im Dialogfeld angezeigten Schaltflächen. Die zweite Gruppe (16, 32, 48, 64) beschreibt die Symbolart. Die dritte Gruppe (0, 256, 512) legt die Standardschaltfläche fest. Die vierte Gruppe (0, 4096) legt fest, in welcher Form das Dialogfeld gebunden ist. Verwenden Sie beim Addieren der Zahlen zu einem Gesamtwert für das Argument buttons nur eine Zahl aus jeder Gruppe.
AnmerkungDiese Konstanten sind durch Visual Basic für Applikationen festgelegt. Daher können die Namen an einer beliebigen Stelle im Code anstelle der tatsächlichen Werte verwendet werden.
Rückgabewerte
Konstante | Wert | Beschreibung |
---|---|---|
vbOK | 1 | OK |
vbCancel | 2 | Abbrechen |
vbAbort | 3 | Abbruch |
vbRetry | 4 | Wiederholen |
vbIgnore | 5 | Ignorieren |
vbYes | 6 | Ja |
vbNo | 7 | Nein |
Die Schaltflächen
Sub MeldungA() Dim iClick As Integer iClick = MsgBox( _ prompt:="Meldung aus Excel!", _ Buttons:=vbOKOnly) MsgBox "Rückgabewert: " & iClickEnd Sub
Der Dialog wird mit OK beendet:
Meldung | Rückgabewert |
---|---|
Abbildung - Meldung vbOkOnly![]() | Abbildung - Rückgabewert vbOkOnly![]() |
Sub MeldungB() Dim iClick As Integer iClick = MsgBox( _ prompt:="OK oder abbrechen?", _ Buttons:=vbOKCancel) If iClick = vbOK Then MsgBox "OK" Else MsgBox "Abbrechen" End IfEnd Sub
In der Prozedur wird in Abhängigkeit der angeklickten Schaltfläche verzweigt:
Meldung | Verzweigung OK | Verzweigung Abbrechen |
---|---|---|
Abbildung - Meldung vbOkCancel![]() | Abbildung - Verzweigung OK![]() | Abbildung - Verzweigung Abbrechen![]() |
Sub MeldungC() Dim iClick As Integer iClick = 4 Do While iClick = 4 iClick = MsgBox( _ prompt:="Abbrechen, wiederholen oder ignorieren?", _ Buttons:=vbAbortRetryIgnore) If iClick = vbRetry Then MsgBox "Ich wiederhole!" ElseIf iClick = vbIgnore Then MsgBox "Ich ignoriere!" End If LoopEnd Sub
In der Prozedur wird in Abhängigkeit der angeklickten Schaltfläche verzweigt; bei Klick auf die Wiederholen-Schaltflächewird der vbAbortRetryIgnore-Dialog erneut aufgerufen:
Meldung | Verzweigung Wiederholen | Verzweigung Ignorieren |
---|---|---|
Abbildung - Meldung VbAbortRetryIgnore![]() | Abbildung - Verzweigung Wiederholen![]() | Abbildung - Verzweigung Ignorieren![]() |
Sub MeldungD() Dim iClick As Integer iClick = MsgBox( _ prompt:="Ja, nein oder abbrechen?", _ Buttons:=vbYesNoCancel) If iClick = vbYes Then MsgBox "Ja" ElseIf iClick = vbNo Then MsgBox "Nein" ElseIf iClick = vbCancel Then MsgBox "Abbrechen" End IfEnd Sub
In der Prozedur werden in Abhängigkeit der geklickten Schaltfläche Werte zurückgeliefert, die weiterverarbeitet werden können:
Meldung | Rückgabewert Ja | Rückgabewert Nein | Rückgabewert Abbrechen |
---|---|---|---|
Abbildung - Meldung VbJesNoCancel![]() | Abbildung - Rückgabewert Ja![]() | Abbildung - Rückgabewert Nein![]() | Abbildung - Verzweigung Abbrechen![]() |
Sub MeldungE() Dim iClick As Integer iClick = MsgBox( _ prompt:="Ja oder nein?", _ Buttons:=vbYesNo) If iClick = vbYes Then MsgBox "Ja" ElseIf iClick = vbNo Then MsgBox "Nein" End IfEnd Sub
In der Prozedur werden in Abhängigkeit der geklickten Schaltfläche Werte zurückgeliefert, die weiterverarbeitet werden können:
Meldung | Rückgabewert Ja | Rückgabewert Nein |
---|---|---|
Abbildung - Meldung VbJesNo![]() | Abbildung - Rückgabewert Ja![]() | Abbildung - Rückgabewert Nein![]() |
Sub MeldungF() Dim iClick As Integer iClick = 4 Do While iClick = 4 iClick = MsgBox( _ prompt:="Abbrechen oder wiederholen", _ Buttons:=vbRetryCancel) If iClick = vbRetry Then MsgBox "Ich wiederhole!" ElseIf iClick = vbCancel Then MsgBox "Abbrechen" End If LoopEnd Sub
In der Prozedur wird in Abhängigkeit der angeklickten Schaltfläche verzweigt; bei Klick auf die Wiederholen-Schaltflächewird der VbRetryCancel-Dialog erneut aufgerufen:
Meldung | Verzweigung Wiederholen | Verzweigung Abbrechen |
---|---|---|
Abbildung - Meldung VbRetryCancel![]() | Abbildung - Verzweigung Wiederholen![]() | Abbildung - Verzweigung Abbrechen![]() |
Die Symbole
Konstanten VbCritical, VbQuestion, VbExclamation und VbInformation
Sub MeldungG() Dim iCounter As Integer For iCounter = 16 To 64 Step 16 MsgBox "Symbole", iCounter Next iCounterEnd Sub
VbCritical | VbQuestion | VbExclamation | VbInformation |
---|---|---|---|
Abbildung - Symbol VbCritical![]() | Abbildung - Symbol VbQuestion![]() | Abbildung - Symbol VbExclamation![]() | Abbildung - Symbol VbInformation![]() |
Die Standardschaltflächen
Konstanten VbDefaultButton1, VbDefaultButton2, VbDefaultButton3 und VbDefaultButton4
Sub MeldungH() Dim iCounter As Integer, iMsg As Integer For iCounter = 0 To 512 Step 256 iMsg = iMsg + 1 MsgBox _ prompt:=iMsg & ". Schaltfläche ist Standardschaltfläche", _ Buttons:=iCounter + vbAbortRetryIgnore Next iCounterEnd Sub
VbDefaultButton1 | VbDefaultButton2 | VbDefaultButton3 |
---|---|---|
Abbildung - VbDefaultButton1![]() | Abbildung - VbDefaultButton2![]() | Abbildung - VbDefaultButton3![]() |
Die Bindung und Position der Meldung
Sub MeldungI() MsgBox "Hallo aus Excel", vbApplicationModalEnd Sub
Die MessageBox ist an Microsoft Excel gebunden. Sie können in anderen Anwendungen weiterarbeiten, ohne die nur in Excel sichtbareMessageBox zu schließen. Es handelt sich hier um die Voreinstellung.
Sub MeldungJ() MsgBox "Hallo aus Excel", vbSystemModalEnd Sub
Die MessageBox ist nicht an Microsoft Excel gebunden. Sie können in anderen Anwendungen nicht weiterarbeiten,ohne die auch in anderen Anwendungen sichtbare MessageBox zu schließen.
Konstante VbMsgBoxSetForeground
Sub MeldungK() MsgBox "Hallo aus Excel", VbMsgBoxSetForegroundEnd Sub
Die MessageBox wird im Vordergrund platziert. Dies gilt weder für andere Anwendungen noch für eine zweite Excel-Instanz.Ein unterschiedliches Verhalten zur Normaleinstellung konnte nicht festgestellt werden.
Sub MeldungL() Dim sTxt As String, sPrompt As String, sFile As String sFile = ThisWorkbook.Path & "\Kontext.chm" If Dir(sFile) = "" Then Beep MsgBox "Hilfedatei existiert nicht!" Exit Sub End If MsgBox _ prompt:="Aufruf einer Hilfedatei", _ Buttons:=vbMsgBoxHelpButton, _ HelpFile:=sFile, Context:="1001"End Sub
Den MessageBoxes kann eine Hilfeschaltfläche mit damit verbundenen Hilfethemen zugeordnet werden:
Abbildung - Konstante vbMsgBoxHelpButton
Sub MeldungM() MsgBox prompt:="Dies ist die erste Zeile" & vbLf & _ "und dies die zweite", Buttons:=vbMsgBoxRightEnd Sub
Der Text einer MsgBox kann rechtsbündig angeordnet werden:
Abbildung - Konstante vbMsgBoxRight