Alternative MsgBox mit Überschrift

Neulich ist mir aufgefallen, dass es in Access Meldungen vom System gibt, die nicht nur normalen Text enthalten, sondern die fett gesetzte Überschriften präsentieren. Also dachte ich, dass dies doch auch für unsere eigenen Meldungsfenster möglich sein müsste und habe mich auf die Suche begeben. Und siehe da – es gibt eine Alternative zur herkömmlichen VBA-MsgBox-Anweisung, mit der wir Überschriften in fetter Schrift darstellen können!

Video passend zu diesem Artikel:

Die gestalterischen Möglichkeiten der unter VBA verfügbaren MsgBox-Anweisung sind schnell ausgeschöpft. Wir können ein Icon setzen, verschiedene Kombinationen von Schaltflächen anzeigen, einen Text für die Titelzeile definieren und den anzuzeigenden Text angeben. Diesen können wir immerhin durch Einfügen der Konstanten vbCrLf noch auf mehrere Zeilen aufteilen – und zwei aufeinanderfolgende vbCrLf liefern eine Leerzeile. Ein Beispiel für einen Aufruf sieht wie folgt aus:

MsgBox "Text der Meldung in der ersten Zeile."  & vbCrLf & vbCrLf & "Noch eine Zeile mit weiteren  Informationen.", vbOKOnly + vbExclamation,  "Titel der Meldung" 

Führen wir diese Anweisung aus, erhalten wir die Meldung aus Bild 1.

VBA-Meldungsfenster

Bild 1: VBA-Meldungsfenster

Meldungsfenster per WizHook-Klasse

VBA bietet eine versteckte Klasse mit undokumentierten Methoden namens WizHook. Diese können wir sichtbar machen, indem wir im Objektkatalog das Kontextmenü anzeigen und dort die Option Verborgene Elemente aktivieren. Danach finden wir per Suche das WizHook-Element und auch seine Methode WizMsgBox (siehe Bild 2).

Die versteckten WizHook-Funktionen

[

Bild 2: Die versteckten WizHook-Funktionen

Um die Funktionen der WizHook-Klasse zu aktivieren, müssen wir die Eigenschaft Key auf den folgenden Wert einstellen:

WizHook.Key = 51488399

Danach können wir die WizMsgBox-Funktion wie folgt aufrufen. Dabei ist anzumerken, dass Werte für alle Parameter angegeben werden müssen. Für die letzten beiden geben wir daher 0 und „“ an. Die übrigen Parameter gestalten wir genau wie beim vorherigen Beispiel:

WizHook.WizMsgBox "Text der Meldung in der ersten Zeile."  & vbCrLf & vbCrLf & "Noch eine Zeile mit weiteren  Informationen.", "Titel der Meldung",  vbOKOnly + vbExclamation, 0, ""

Das Ergebnis sieht ähnlich wie bei der Original-MsgBox-Funktion aus (siehe Bild 3).

Neulich ist mir aufgefallen, dass es in Access Meldungen vom System gibt, die nicht nur normalen Text enthalten, sondern die fett gesetzte Überschriften präsentieren. Also dachte ich, dass dies doch auch für unsere eigenen Meldungsfenster möglich sein müsste und habe mich auf die Suche begeben. Und siehe da – es gibt eine Alternative zur herkömmlichen VBA-MsgBox-Anweisung, mit der wir Überschriften in fetter Schrift darstellen können!

Video passend zu diesem Artikel:

Die gestalterischen Möglichkeiten der unter VBA verfügbaren MsgBox-Anweisung sind schnell ausgeschöpft. Wir können ein Icon setzen, verschiedene Kombinationen von Schaltflächen anzeigen, einen Text für die Titelzeile definieren und den anzuzeigenden Text angeben. Diesen können wir immerhin durch Einfügen der Konstanten vbCrLf noch auf mehrere Zeilen aufteilen – und zwei aufeinanderfolgende vbCrLf liefern eine Leerzeile. Ein Beispiel für einen Aufruf sieht wie folgt aus:

MsgBox "Text der Meldung in der ersten Zeile."  & vbCrLf & vbCrLf & "Noch eine Zeile mit weiteren  Informationen.", vbOKOnly + vbExclamation,  "Titel der Meldung" 

Führen wir diese Anweisung aus, erhalten wir die Meldung aus Bild 1.

VBA-Meldungsfenster

Bild 1: VBA-Meldungsfenster

Meldungsfenster per WizHook-Klasse

VBA bietet eine versteckte Klasse mit undokumentierten Methoden namens WizHook. Diese können wir sichtbar machen, indem wir im Objektkatalog das Kontextmenü anzeigen und dort die Option Verborgene Elemente aktivieren. Danach finden wir per Suche das WizHook-Element und auch seine Methode WizMsgBox (siehe Bild 2).

Die versteckten WizHook-Funktionen

[

Bild 2: Die versteckten WizHook-Funktionen

Um die Funktionen der WizHook-Klasse zu aktivieren, müssen wir die Eigenschaft Key auf den folgenden Wert einstellen:

WizHook.Key = 51488399

Danach können wir die WizMsgBox-Funktion wie folgt aufrufen. Dabei ist anzumerken, dass Werte für alle Parameter angegeben werden müssen. Für die letzten beiden geben wir daher 0 und „“ an. Die übrigen Parameter gestalten wir genau wie beim vorherigen Beispiel:

WizHook.WizMsgBox "Text der Meldung in der ersten Zeile."  & vbCrLf & vbCrLf & "Noch eine Zeile mit weiteren  Informationen.", "Titel der Meldung",  vbOKOnly + vbExclamation, 0, ""

Das Ergebnis sieht ähnlich wie bei der Original-MsgBox-Funktion aus (siehe Bild 3).

Access im Unternehmen

Unser exklusives Angebot für Dich!

Access im Unternehmen
13,25 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements im ersten Jahr, danach 189,-/Jahr)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →