VBA MsgBox
Inhaltsverzeichnis
VBA MsgBox
Du hast vor eine VBA MsgBox in deiner „Excel VBA„-Anwendung anzuzeigen und möchtest deinem Nutzer darüber Informationen unterbreiten?
Dann freut es mich Dir alles Notwendige über die MsgBox-Funktion der Visual Basic for Applications Programmiersprache näher zu bringen.
Schaue doch später auch gerne mal bei meinen anderen Beiträgen vorbei: VBA Range, InStr, Array.
Hintergrund-Story – VBA MsgBox
Egal ob Dialogbox, Dialog, Dialogfenster, oder Dialogfeld, für gewöhnlich sind das alles Synonyme für ein und das Selbe.
Alle das Selbe meinend, bieten Messageboxen – Nachrichtendialoge – die Möglichkeit, Nutzern Informationen kontextuell aufbereitet darzustellen.
Neben der dadurch abgebildeten Informationen, ermöglicht es ein solcher Dialog gängigerweise eine Art Antwort durch den Nutzer an die Software.
Design & funktionale Möglichkeiten
Viele Wege führen nach Rom, ein Spruch, den fast jeder kennt, allerdings ist auch besonders in der Softwareentwicklung Wahrheit dahinter.
Vom allgemeinen „OK“-Dialog, bis komplexen Eingabemöglichkeiten in Form von diversen Inputs und Buttons.
Neben dem Fokus in diesem Beitrag auf die einfache MsgBox, kann sich auch wie so oft ein Blick nach links und rechts rentieren.
Sperren, oder nicht sperren?
Größtenteils sperren Dialoge den die übrige Anwendung, um die Aufmerksamkeit des Nutzers bei sich zu halten, man betitelt diese Dialog auch als modale Dialoge.
Es gibt jedoch vermutlich auch Aufgabengebiete, in denen es durchaus sinn macht, so genannte non-modale Dialoge zu verwenden, Welche die Anwendung nicht sperren.
Eine gängige Anwendungsmöglichkeit eine nicht-modalen Dialogs wäre eventuell die Eingabe eines Termins.
Designer & Tools
Durch das Folgen der Designer-Tools bestimmter Standards, sollen sich Nutzer möglichst schnell und intuitiv in den Oberflächen zurechtfinden.
Meistens befinden sich in der Mitte der Dialoge die Eingabefelder, Welche durch passende Beschriftungen gekennzeichnet sind.
Die Eingabefelder werden gängigerweise durch Designer-Toolkits zusammengestellt und optimal angeordnet.
Am unteren Ende des Dialogs befinden sich die primären Handlungen, darunter meist das Bestätigen, oder das Abbrechen des Dialoges.
Gängige Dialogfenster
Als Anwender kennt man meist schon viele Dialogfenster, hier siehst Du ein paar Beispiele:
- Informationsdialoge – Stellen Nachrichten und Knöpfe für die mögliche Antwort ans Programm dar.
- Eingabedialoge – Einfache Text-erfassende Dialogfenster.
- Datums-Dialoge – Fenster zur Auswahl eines Datums, oder auch kompletten Zeiträumen.
- Dateidialoge – Bieten die Option der Auswahl von Dateien, oder auch Verzeichnissen.
- Farbdialoge – Geben die Option zur Eingabe ein oder mehrerer Farben.
Code – VBA MsgBox
Schauen wir uns nun einmal konkrete Beispiele an:
Die Schreibweise alias Grammatik
Die übliche Schreibweise sieht wie hier drunter aus:
MsgBox <InhaltDesDialoges>, <KnöpfeUndIcons>, <TitelDesDialoges>
Schnelles, easy Beispiel
MsgBox "Die Nachricht des Dialoges", VBOKOnly, "Der Titel des Dialoges"
Dieses einfache Beispiel sieht als ausgeführtes Skript wie sofort folgend aus (Text geändert).
Du bekommst ein Dialogfenster mit dem gewählten Titel, dem angegebenen Inhalt und dem „OK“-Button dargestellt.
Die Schnell-Form
Die Schnell-Form mit Auslassen der optionalen Parameter wie z. B. die „Knöpfe“ und den „Titel“, sieht das Beispiel wie hier aus:
MsgBox "VBA MsgBox Nachricht hier :)"
Kombination der Konstanten
Hier nutzen wir nun einmal den „OR-Operator„, um die beiden Konstanten „vbYesNo“ & „vbQuestion“ zu verknüpfen.
Somit können mehrere Informationen auf einmal übergeben und der Dialog besser gestaltet werden.
MsgBox "Der Inhalt der Nachrichtenbox", vbYesNo OR vbQuestion, "Dialogtitel"
Die Antwort verarbeiten
Damit Du die erhaltene „Antwort“ des Dialoges verarbeiten kannst, kannst Du wie folgt vorgehen:
Dim x x = MsgBox ("Der Inhalt der Nachrichtenbox", vbYesNo OR vbQuestion, "Dialogtitel") If x = vbYes Then MsgBox "Der JA-Knopf wurde geklickt!"
In meiner kleinen Tabelle findest Du passende Button–Konstanten der VBA MsgBox.
Konstante | Wert | Beschreibung |
vbOKOnly | 0 | „OK“ wird dargestellt |
vbOKCancel | 1 | „OK“ und „Abbrechen“ werden dargestellt |
vbAbortRetryIgnore | 2 | „Abbrechen“, „Wiederholen“ und „Ignorieren“ werden dargestellt |
vbYesNoCancel | 3 | „Ja“, „Nein“ und „Abbrechen“ werden dargestellt |
vbYesNo | 4 | „Ja“ und „Nein“ werden dargestellt |
vbRetryCancel | 5 | „Wiederholen“ und „Abbrechen“ werden dargestellt |
vbCritical | 16 | Das typische „X“ mit dem Windows Error-Sound werden dargestellt |
vbQuestion | 32 | Die gängige Windows-Sprechblase und dem nachfragenden Windows-Sound werden dargestellt |
vbExclamation | 48 | Ein gelbes Warndreieck und der Windows-Sound „Warnung“ wird dargestellt |
vbInformation | 64 | Eine Sprechblase mit Ausrufezeichen wird dargestellt und der Benachrichtigungs-Sound abgespielt |
vbDefaultButton1 | 0 | Selektiert den ersten Knopf ist bei Darstellung |
vbDefaultButton2 | 256 | Selektiert den zweiten Knopf ist bei Anzeige |
vbDefaultButton3 | 512 | Selektiert den dritten Button Darstellung bei Anzeige |
vbDefaultButton4 | 768 | Wählt den vierten Knopf bei Anzeige automatisch aus |
vbApplicationModal | 0 | Eine Möglichkeit um das Dialogfenster als „modal“ zu konfigurieren |
vbSystemModal | 4096 | Stoppt weitere Prozesse bis das Fenster beantwortet wurde |
vbMsgBoxHelpButton | 16384 | Fügt einen Hilfs-Button zur Box hinzu |
VbMsgBoxSetForeground | 65536 | Lässt das Dialogfeld in den Vordergrund rücken |
vbMsgBoxRight | 524288 | Der Text wird rechtsbündig dargestellt |
vbMsgBoxRtlReading | 1048576 | Lässt den Text von rechts nach links dargestellt werden |
Rückgabewerte der VBA MsgBox
Hier siehst Du eine Tabelle, Die die einzelnen Rückgabewerte der MsgBox zeigt.
Konstante | Wert | Button |
vbOK | 1 | OK |
vbCancel | 2 | Abbrechen |
vbAbort | 3 | Abbrechen |
vbRetry | 4 | Wiederholen |
vbIgnore | 5 | Ignorieren |
vbYes | 6 | Ja |
vbNo | 7 | Nein |