VBA MsgBox

VBA MsgBox
VBA MsgBox

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.
  • EingabedialogeEinfache 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.

VBA MsgBox Nachricht Beispiel
VBA MsgBox Nachricht Beispiel

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"
VBA MsgBox Beispiel mit Icon und zwei Buttons
VBA MsgBox Beispiel mit Icon und zwei Buttons

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 ButtonKonstanten der VBA MsgBox.

KonstanteWertBeschreibung
vbOKOnly0„OK“ wird dargestellt
vbOKCancel1„OK“ und „Abbrechen“ werden dargestellt
vbAbortRetryIgnore2„Abbrechen“, „Wiederholen“ und „Ignorieren“ werden dargestellt
vbYesNoCancel3„Ja“, „Nein“ und „Abbrechen“ werden dargestellt
vbYesNo4„Ja“ und „Nein“ werden dargestellt
vbRetryCancel5„Wiederholen“ und „Abbrechen“ werden dargestellt
vbCritical16Das typische „X“ mit dem Windows Error-Sound werden dargestellt
vbQuestion32Die gängige Windows-Sprechblase und dem nachfragenden Windows-Sound werden dargestellt
vbExclamation48Ein gelbes Warndreieck und der Windows-Sound „Warnung“ wird dargestellt
vbInformation64Eine Sprechblase mit Ausrufezeichen wird dargestellt und der Benachrichtigungs-Sound abgespielt
vbDefaultButton10Selektiert den ersten Knopf ist bei Darstellung
vbDefaultButton2256Selektiert den zweiten Knopf ist bei Anzeige
vbDefaultButton3512Selektiert den dritten Button Darstellung bei Anzeige
vbDefaultButton4768Wählt den vierten Knopf bei Anzeige automatisch aus
vbApplicationModal0Eine Möglichkeit um das Dialogfenster als „modal“ zu konfigurieren
vbSystemModal4096Stoppt weitere Prozesse bis das Fenster beantwortet wurde
vbMsgBoxHelpButton16384Fügt einen Hilfs-Button zur Box hinzu
VbMsgBoxSetForeground65536Lässt das Dialogfeld in den Vordergrund rücken
vbMsgBoxRight524288Der Text wird rechtsbündig dargestellt
vbMsgBoxRtlReading1048576Lässt den Text von rechts nach links dargestellt werden
VBA MsgBox Button-Konstanten

Rückgabewerte der VBA MsgBox

Hier siehst Du eine Tabelle, Die die einzelnen Rückgabewerte der MsgBox zeigt.

KonstanteWertButton
vbOK1OK
vbCancel2Abbrechen
vbAbort3Abbrechen
vbRetry4Wiederholen
vbIgnore5Ignorieren
vbYes6Ja
vbNo7Nein
Übersicht VBA MsgBox-Konstanten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.