🚀 Moderne UI in Access: Custom Dialogs & Mini Notifications – jetzt noch smarter, schneller & flexibler!

Eine moderne Datenbank mit den klassischen MsgBox & InputBox zu bauen, ist wie ein neuer Porsche – aber mit Käfer-Felgen. Es funktioniert, aber wirkt nicht mehr zeitgemäß.

Zeit für den nächsten Schritt: Custom Dialogs & Mini Notifications!

  


🦉Warum Custom Dialogs?

Stell dir Folgendes vor: Du arbeitest seit Monaten an einer Access-Datenbank. Die Logik ist perfekt, die Leistung stimmt, die Sicherheit ist erstklassig. Dann zeigst du sie deinem Kunden – und das Erste, was dieser sieht, ist ein graues MsgBox-Fenster aus den 90er Jahren.

 

Ich zeige dir hier, wie du mit wenig Aufwand von grau zu großartig kommst. Wer heute Nutzer mit einer Access-Anwendung begeistern will, braucht mehr als Standarddialoge. Die neue Version meiner Custom Dialogs ist ein kompletter Refactor – noch schneller, noch einfacher, noch mächtiger.

  

⚖️ Gegenüberstellung der Features

Feature Standard DialogsCustom DialogsNotifications
Formatted text ✔️
Images ✔️
Tables ✔️
Web content ✔️
Printable ✔️
Don't show again ✔️
Copy content ✔️
Delayed buttons ✔️
Colored header ✔️
Templates ✔️
Data selection ✔️
Auto close ✔️ ✔️
Custom Icons ✔️
Build in ✔️
Easy to use ✔️ ✔️ ✔️
IntelliSense ✔️ ✔️ ✔️


✨ Die Stars der Show:

  1. myMsgBox – die moderne alternative zur MsgBox
  2. myInputBox – schöner als die original InputBox
  3. myComboBox – wie eine InputBox jedoch mit Datenauswahl
  4. myListBox – wie die myComboBox jedoch als Listbox (Mehrfachauswahl möglich).
  5. myErrorBox – eine DialogBox um Fehlermeldungen anzuzeigen.
  6. myNotification – dezentes kurzes Feedback an den User.

MyComboBox und myListbox können jeweils als Werteliste oder aber per SQL Abfrage mit Werten gefüllt werden. Auch Mehrspaltige Einträge sind möglich.  


💡 Nicht jedes Feedback benötigt eine DialogBox:

myNotification liefert dezentes, kurzes Feedback – vollflächig halbtransparent über den Bildschirm gelegt, mit einem zentral platzierten Icon. Die Benachrichtigung hebt sich optisch ab und schließt automatisch nach kurzer Zeit. So erhalten Nutzer sofortige Rückmeldung, ohne aus ihrem Workflow gerissen zu werden.


🎨 Zwei integrierte Editoren – volle Kontrolle 

 

✨ Dialog-Typen Editor 
Mit dem Dialog-Typen-Editor kannst du das Icon anpassen, eine Header-Farbe festlegen und sogar den Farbverlauf des Headers bestimmen. Dadurch wirken die Dialoge deutlich moderner und fügen sich perfekt ins Design deiner Anwendung ein.

✨ Template Editor
Mit dem Template-Editor erstellst oder bearbeitest du komplette Dialog-Vorlagen – schnell, flexibel und komfortabel.

Dort kannst du:

✅ den Dialog-Typ wählen (myMsgBox, myInputBox, myComboBox oder myListBox),
Überschrift & BodyText (Plaintext oder HTML) eintragen,
✅ die Button-Beschriftungen festlegen,
✅ eine „Do not show again“-Checkbox hinzufügen,
✅ einen Druck-Button aktivieren,
✅ einen Kopiere Inhalt-Button aktivieren,
✅ die Auto-Close-Zeit sowie die verzögerte Anzeige der Buttons bestimmen,
Standardwerte für Input-, List- oder ComboBox hinterlegen,
Werte für ListBox und ComboBox direkt einpflegen. Als Werteliste oder als SQL String


Besonders praktisch: Direkt aus dem Editor heraus lässt sich ein Online-HTML-Editor öffnen. Mit diesem WYSIWYG-Tool wird aus einfachem Plaintext im Handumdrehen cooles HTML, das du anschließend direkt in den Template-Editor übernimmst.


💡 IntelliSense

Mit modHelper_Enumeration gibt’s endlich IntelliSense-Support!

Mir war wichtig, dass die Aufrufe von Dialogboxen und Notifications so einfach wie möglich sind – und dafür braucht es IntelliSense. Deshalb werden alle Dialogtypen (sowohl für Notifications als auch für Dialogboxen) über Enumerationen gesteuert.

Damit man diese Enums nicht mehr mühsam von Hand eintragen muss, habe ich das Modul modHelper_Enumeration entwickelt. Neue Enum-Einträge lassen sich dynamisch zur Laufzeit erstellen, bearbeiten oder löschen – direkt über einen komfortablen Editor. Ein echtes Highlight: Ein Modul, das Werte aus einem Modul auslesen, prüfen, bearbeiten oder löschen kann.

Zusätzlich kommen zwei Klassen ins Spiel:

clsDLG_Config – verwaltet das komplette Konfigurations-Setup und die Werte der Dialogboxen.

clsDLG_Result – liefert die Rückgaben, also welcher Button geklickt wurde oder welche Werte in ListBox, ComboBox oder InputBox eingetragen/ausgewählt wurden.

 

So entsteht eine maximal flexible, aber gleichzeitig intuitive Struktur – mit voller IntelliSense-Power.


🔍 Some examples?

 
   
Call a dialogBox as command

myMsgBox "Header", "This is the body text", DLG_Info, "OK", "Cancel"Debug.Print myComboBox("QUESTION", "Please choose a value.", DLG_Question, "SELECT dlg_type FROM tblDLG_Dialogs_types", "OK")Debug.Print myInputBox("QUESTION", "Please enter a value.", DLG_Question, "Default value", "OK", "Cancel")Debug.Print myListBox("QUESTION", "Please choose a value.",DLG_Mail, "1;2;3;4;3;5", "OK")

 
   
Call a MessageBox with more options:

With DLG_Config
    .DialogType = DLG_Info 
    .header = "HEADER Text”
    .Body = “HTML string”
    .Button1 = "OK"
    .Button2 = "Cancel"
    .Button3 = "Another button"
    .Printing = True
  .CopyContent = True
    .AutoClose = 20 
    .ButtonDelay = 4
    .DialogWidth = 10000
    .DialogHeight = 5000
    .Start_as_MsgBox
End With

 
   
Call a ListBox with more options (ComboBox is similar):

With DLG_Config
    .DialogType = DLG_Question
    .header = "HEADER Text”
    .Body = “HTML string” 
    .Button1 = "OK"
    .ComboValue = "SELECT dlg_type, dlg_typeColor FROM tblDLG_Dialogs_types ORDER BY dlg_type"
    .ComboWidths = "5cm;0cm"
    . DefaultValue = “DLG_Info”     
    .Start_as_ListBox
End With

 
   
Call an Inputbox using a template:

With DLG_Config
    .TemplateName = "delete"
    .TemplateValue1 = "Example text 1"
    .TemplateValue2 = "Example text 2"
    .DefaultValue = “Text xxx”
    .Start_as_InputBox
End With

 
   
Call a Notification:

myNotification DLG_Cancel, Black, 1


💡 Ersetzen von integrierten Standarddialogen 

Ich hatte die Ehre, einen Vortrag bei der Access User Group Europe zu halten. Während der Sitzung fragte jemand, ob es möglich wäre, eine Funktion zu erstellen, die die integrierten Standarddialoge – MsgBox und InputBox – automatisch ersetzen könnte. Ihr habt danach gefragt, und hier ist sie!  
Meine neue Version unterstützt genau das. Die Funktion durchsucht die gesamte VBE, erkennt alle MsgBox- und InputBox-Aufrufe, zeigt sie an und lässt den Benutzer entscheiden, ob sie ersetzt werden sollen.


💡 Playground: Eine Vorschau was alles noch möglich ist

Neben den eigentlichen Dialogen habe ich auch einen Playground mitgeliefert. Hier zeige ich kurz, was mit den neuen Funktionen noch alles möglich ist:

✅ Werte in bestehendem HTML-Code (z. B. für Theme oder Sprache) manipulieren
✅ gewählte Werte wieder auslesen

 

Dabei bin ich auch auf eine kleine Besonderheit gestoßen: Das Webbrowser-Control in Access erlaubt aktuell nur das Auslesen von Inhalten, wenn diese per Navigate-Funktion geladen wurden. Schreibe ich hingegen den innerHTML direkt (so wie ich es in den Templates mache – weil es schneller ist), lassen sich die Werte nicht auslesen.

👉 Mein Workaround im Playground: Ich erstelle eine temporäre HTML-Datei, lade sie ein und lösche sie danach wieder. Funktioniert – aber die Ladezeit ist spürbar länger.

Es gibt jedoch eine Lösung für das sehr schnelle Laden der HTML-Datei. Es scheint, dass die Webbrowser-Steuerung vor dem Laden der lokalen Datei einen DNS-Aufruf durchführt. Das klingt dumm, ist es aber auch. Es dauert also lange, bis der DNS-Server antwortet, dass er keine Ahnung hat, wo sich Ihre lokale Datei befindet. Bevor Windows jedoch den DNS-Aufruf durchführt, sucht es immer in der lokalen Hosts-Datei nach einem Eintrag. Wenn wir „127.0.0.1 msaccess” in diese Datei einfügen, wird die HTML-Datei sofort geladen. 

MIT DIESER KORREKTUR BETRACHTETE ICH DEN PLAYGROUND NICHT MEHR ALS TESTUMGEBUNG!!!

Sie finden die Datei in der Regel unter C:\Windows\System32\drivers\etc\hosts

Meine neue Version verfügt nun über eine integrierte Funktion, um zu überprüfen, ob der Eintrag vorhanden ist. Ist dies nicht der Fall, wird er erstellt.




🧪 Einfach ausprobieren

Anhand meiner Testing-Form kannst du die Dialoge und Notifications direkt ausprobieren. Das macht es einfach, sie kennenzulernen, zu testen.– und sie in deine eigene Anwendung zu übernehmen. Deine Nutzer werden es dir danken.

Du entwickelst mit Access? Dann probier’s aus – ich freu mich auf dein Feedback oder Ideen für weitere Funktionen! 🚀

Lasst uns ACCESS gemeinsam auf die nächste Stufe bringen. Denn eines ist klar:



Standard war gestern. Heute ist, ACCESS ist wieder sexy. 

Mit dieser kleinen Erweiterung wird euer Access-Interface nicht nur intuitiver, sondern auch ein ganzes Stück „sexier“.

Die ausführliche Beschreibung und alle Hinweise findet ihr direkt im Code – wie gewohnt gut dokumentiert.



  DOWNLOAD  

Version: 3.3.1   (04 OCT 2025)


Wenn du es hilfreich findest und seinen Wert anerkennst, würde ich mich über eine kleine Spende freuen, die den Aufwand und den Nutzen widerspiegelt, den es dir bietet. PayPal Eine kleine Spende