Access bietet im Formular- und Berichtsentwurf die Möglichkeit, Steuerelemente mithilfe von Steuerelement-Assistenten zu erstellen. Das ist für Einsteiger eine Erleichterung, führt aber auch dazu, dass sie schnell Ergebnisse erzielen, deren Zustandekommen sie anschließend nicht mehr nachvollziehen können. Sie helfen nicht, die zum Anlegen von Steuerelementen und ihren Funktionen nötigen Schritte zu verstehen. Wenn man jedoch genau weiß, wie man Steuerelemente erstellt und programmiert, gelangt man schnell zu dem Punkt, dass man die gleichen Schritte immer wieder manuell durchführen muss. Und hier kommt ein spannendes Feature von Microsoft Access ins Spiel: Wir können auch selbst Steuerelement-Wizards programmieren, mit denen wir Steuerelemente genau nach unseren Wünschen anlegen können. Dabei sparen wir wertvolle Zeit, weil wir diese so gestalten können, dass nur noch wenige Eingaben nötig sind, um die gewünschten Steuerelemente zu erhalten. In diesem Beitrag zeigen wir, welche Steuerelement-Assistenten es schon gibt und wie wir eigene grundsätzlich hinzufügen können.
Steuerelement-Wizards in Access nutzen
Wenn wir mit einer frisch installierten Access-Anwendung arbeiten, werden die Steuerelement-Assistenten, soweit verfügbar, automatisch gestartet. Dazu müssen wir lediglich ein entsprechendes Steuerelement anlegen. Die meisten professionellen Entwickler haben dieses Feature jedoch deaktiviert, da sie die Assistenten ohnehin nicht nutzen.
Wenn wir jedoch eigene Steuerelement-Wizards programmieren und nutzen wollen, müssen wir diese Funktion zunächst wieder aktivieren. Das gelingt, indem wir im Formular- oder Berichtsentwurf (im Folgenden werden wir uns auf den Formularentwurf beschränken) im Ribbon die Option Steuerelement-Assistenten verwenden aktivieren (siehe Bild 1).

Bild 1: Aktivieren der Steuerelement-Wizards
Wenn wir dann in der Toolbox auf eines der Steuerelemente klicken, für das ein eingebauter Assistent bereitsteht, wird dieser beim Hinzufügen des Steuerelements angezeigt. So etwa der Assistent, der beim Hinzufügen einer Schaltfläche aufgerufen wird (siehe Bild 2).

Bild 2: Der eingebaute Schaltflächen-Wizard von Access
Diese ist allerdings für einen professionellen Access-Entwickler nicht hilfreich, da er zum Beispiel keinen VBA-Code zum Ausführen erzeugt, sondern die Funktion in einem Makro hinterlegt.
Interessant sind zum Beispiel die Wizards für Kombinations- und Listenfelder. Starten wir diese durch Anlegen eines dieser Steuerelemente, finden wir einen Assistenten vor, der ähnliche Schritte anbietet wie der Assistent zum Erstellen von Nachschlagefeldern in Tabellen.
Steuerelement-Wizards in der Registry
Ob ein Steuerelement-Wizard zur Verfügung steht, sehen wir in Access erst, wenn wir eines der Steuerelemente anlegen. Dann erscheint der Wizard, falls vorhanden, andernfalls wird das Steuerelement einfach zum Formularentwurf hinzugefügt.
Für welche Steuerelemente es eingebaute Wizards gibt, können wir in der Registry nachsehen. Diese befinden sich zum Beispiel für ein 32-Bit-Office unter dem folgenden Pfad:
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office\16.0\Access\Wizards\Control Wizards\
Hier sehen wir die verschiedenen Steuerelementtypen und darunter die dafür zur Verfügung stehenden Wizards (siehe Bild 3). Es gibt nur für wenige Steuerelemente solche Assistenten und alle haben nur ein eingebautes Exemplar.

Bild 3: Steuerelement-Wizards in der Registry
Dadurch werden die Steuerelement-Assistenten auch direkt angezeigt, wenn wir das betreffende Steuerelement anlegen.
Gibt es mehr als einen Wizard, weil wir beispielsweise selbst einen hinzugefügt haben, erscheint der Dialog Generator auswählen aus Bild 4, der alle verfügbaren Wizards anzeigt.

Bild 4: Mehrere Wizards für einen Steuerelementtyp
Eigenen Steuerelement-Wizard erstellen
Um einen benutzerdefinierten Steuerelement-Wizard zu erstellen, benötigen wir zunächst eine eigene Datenbank, die den Wizard enthält. Wir können über eine solche Datenbank allerdings auch mehrere Wizards gleichzeitig zur Verfügung stellen.
Diese Datenbank muss die Dateiendung .accda statt .accdb aufweisen, was wir durch Umbenennen erreichen.
Außerdem muss die Datenbank eine Tabelle namens USysRegInfo erhalten, welche die Informationen enthält, die beim Installieren des Wizards in die Registry übertragen werden sollen.
Diese Tabelle enthält Informationen wie die, die wir bereits weiter oben im Screenshot der Registry abgebildet haben.
Für einen Steuerelement-Wizard benötigen wir darin die folgenden Informationen:
- Function: Gibt die VBA-Funktion an, die beim Aufrufen des Wizards aufgerufen werden soll. Diese öffnet dann etwa ein Formular, über das wir die spezifischen Eigenschaften für das zu erstellende Steuerelement eingeben. Die Funktion muss ein spezielles Format aufweisen.
- Library: Enthält den Pfad zu der .accda-Datei mit den Funktionen des Wizards.
- Description: Hier können wir eine Beschreibung hinterlegen. Diese muss mit Bedacht gewählt werden, denn sie taucht in dem Dialog auf, der erscheint, wenn es mehrere Wizards für ein Steuerelement gibt. Man kann daher hier auch einfach den Namen des Wizards angeben und gegebenenfalls eine kurze Erläuterung.
- Can Edit: Gibt an, ob der Wizard bestehende Steuerelemente editieren kann (Wert 1) oder ob er nur zum Anlegen neuer Steuerelemente zur Verfügung steht (Wert 0).
Diese Werte hinterlegen wir in der bereits erwähnten Tabelle USysRegInfo. Am einfachsten übernehmen Sie diese aus der Beispieldatenbank. Das ist sogar zu empfehlen, da bereits kleinste Fehler dazu führen, dass der Wizard nicht installiert werden kann. Ich habe einmal mehrere Stunden damit verbracht, einen solchen Fehler zu finden – am Ende lag es daran, dass ich statt Can Edit den Wert CanEdit (zusammengeschrieben) verwendet habe. Den Entwurf der Tabelle USysRegInfo sehen Sie in Bild 5.

Bild 5: Die Tabelle USysRegInfo in der Entwurfsansicht
Achtung: Wenn Sie die Tabelle anlegen oder importieren, ist diese normalerweise nicht zu sehen. Das liegt an dem Präfix USys. Diese Tabellen werden standardmäßig ausgeblendet und erscheinen erst, wenn wir in den Optionen des Navigationsbereichs die Eigenschaft Systemobjekte anzeigen aktivieren.
Für einen einfachen Button-Wizard tragen wir die Werte aus Bild 6 in diese Tabelle ein. Der erste Eintrag, dessen Felder ValName und Value leer sind, dient lediglich dazu, den Schlüssel wie in Subkey angegeben zur Registry hinzuzufügen. Die übrigen Einträge legen die Name-Wert-Paare unter diesem Schlüssel an.

Bild 6: Die Tabelle USysRegInfo mit den Daten für einen Button-Wizard
Das Feld Subkey nimmt den Pfad auf, unter dem wir den Eintrag in der Registry erstellen wollen. Er lautet in diesem Fall:
HKEY_CURRENT_ACCESS_PROFILE\Wizards\Control Wizards\CommandButton\ButtonWizard
Hier verwenden wir mit HKEY_CURRENT_ACCESS_PROFILE einen Platzhalter, der beim Installieren des Add-Ins automatisch durch den entsprechenden Zweig der Registry ersetzt wird. Dann folgt der Schlüssel Wizards, der alle Assistenten für verschiedene Elemente enthält. Der nächste Schlüssel Control Wizards gibt an, dass es sich bei dem Assistenten um einen Steuerelement-Assistenten handelt. Anschließend geben wir den Typ des Steuerelements an, für den wir den Assistenten aufrufen wollen, in diesem Fall CommandButton. Es gibt unter anderem die folgenden Typen:
Label, TextBox, OptionGroup, ToggleButton, OptionButton, CheckBox, ComboBox, ListBox, CommandButton, Image, UnboundObjectFrame, BoundObjectFrame, PageBreak, SubformSubreport, Line und Rectangle
Diese Bezeichnungen müssen ebenfalls exakt übernommen werden. Schließlich folgt der Name des Assistenten.
Der Wert im Feld Subkey muss für alle Angaben, die zu diesem Wizard in die Registry eingetragen werden sollen, exakt gleich sein.
Das Feld Type enthält den Typ des Registry-Eintrags. Er kann die folgenden Werte annehmen:
- 0: Zeigt an, dass ein Schlüssel angelegt werden soll.
- 1: Legt fest, dass ein Eintrag des Typs REG_SZ angelegt wird.
- 4: Legt fest, dass ein Eintrag des Typs REG_DWORD angelegt wird.
Unter ValName geben wir den Namen des Name-Wert-Paares für den Eintrag an.
Und Value enthält schließlich den Wert. Hier verwenden wir für Library wiederum einen Platzhalter:
|ACCDIR
Dieser wird beim Installieren durch den Add-In-Ordner von Windows ersetzt, in den die Wizard-Datenbank beim Installieren kopiert wird. Dahinter müssen ein Backslash und der Name der Wizard-Datenbank folgen.
Funktion zum Starten des Wizards
Damit der Wizard gestartet werden kann, geben wir unter Function den Namen der VBA-Funktion an, die beim Starten ausgelöst werden soll.
Diese muss für die Verwendung in einem Steuerelement-Wizard ohne führendes Gleichheitszeichen und ohne folgendes Klammernpaar angegeben werden. In unserem Fall lautet der Eintrag Autostart_ButtonWizard.
Die dazu anzulegende VBA-Funktion muss ein bestimmtes Format aufweisen, da beim Aufrufen eines Steuerelement-Wizards zwei wichtige Informationen übergeben werden:
- Der Name des Steuerelements. Beim Anlegen eines neuen Steuerelements ist das der von Access vergebene Name, beim Editieren eines vorhandenen Steuerelements der gegebenenfalls bereits vom Benutzer geänderte Name.
- Der Name des Bezeichnungsfeldes des Steuerelements, soweit vorhanden. Steuerelemente mit dem Typ TextBox, ListBox oder ComboBox werden standardmäßig mit einem Bezeichnungsfeld angelegt, dessen Name hier übergeben wird.
Die Signatur der Funktion muss wie folgt aussehen:
Public Function Autostart_ButtonWizard( _ Optional strControl As String, _ Optional strLabel As String) As Variant End Function
Zu Beispielzwecken füllen wir diese wie folgt:
Public Function Autostart_ButtonWizard( _ Optional strControl As String, _ Optional strLabel As String) As Variant Dim strMessage As String On Error GoTo Fehler strMessage = "Control-Wizard für ''" & strControl & "''" If Not Len(strLabel) = 0 Then strMessage = strMessage & vbCrLf _ & "mit Bezeichnungfeld ''" & strLabel & "''" End If MsgBox strMessage, vbOKOnly + vbInformation, _ "Button-Wizard" Ende: Exit Function Fehler: MsgBox Err.Number & " " & Err.Description End Function
Wir wollen also einfach eine Meldung mit dem Namen des Steuerelements und gegebenenfalls dem Namen des Bezeichnungsfeldes ausgeben.
Eigenschaften der Wizard-Datenbank festlegen
Damit sind wir fast fertig. Es fehlen allerdings noch einige wichtige Einstellungen. Diese nehmen wir in den Eigenschaften der Access-Datenbank vor, die wir finden, indem wir zum Ribbon-Reiter Datei wechseln und dann auf Informationen klicken. Hier finden wir rechts den Link Datenbankeigenschaften anzeigen und bearbeiten. Betätigen wir den Link, erscheint der Eigenschaften-Dialog zu dieser Datenbank. Hier füllen wir folgende Eigenschaften:
- Titel: Erscheint im Add-In-Manager unter Verfügbare Add-Ins
- Firma: Erscheint im Add-In-Manager beim Markieren des Add-Ins im unteren Bereich.
- Kommentare: Erscheint im Add-In-Manager beim Markieren des Add-Ins im unteren Bereich.
Unsere Einstellungen sehen Sie in Bild 7.

Bild 7: Eigenschaften der Wizard-Datenbank
Wizard installieren
Zum Installieren des Wizards muss nach unseren Experimenten Access zunächst im Administrator-Modus gestartet werden. Dann öffnen wir eine beliebige Datenbank und rufen über das Ribbon den Add-In-Manager auf (Datenbanktools|Add-Ins|Add-Ins|Add-In-Manager).
Der Add-In-Manager sieht wie in Bild 8 aus, wenn noch keine Add-Ins installiert sind. Hier klicken wir auf die Schaltfläche Neues hinzufügen… und wählen die .accda-Datei mit unserem Steuerelement-Wizard aus. Anschließend erscheint der neue Eintrag wie in Bild 9. Hier sehen wir nun die Einstellungen, die wir in den Datenbank-Eigenschaften vorgenommen haben.

Bild 8: Der jungfräuliche Add-In-Manager

Bild 9: Der Add-In-Manager mit dem neu installierten Wizard
Aufrufen des Steuerelement-Wizards
Um den Steuerelement-Wizard aufzurufen, legen wir ein Formular in der Entwurfsansicht an. Klicken wir in der Toolbox auf die Schaltfläche und dann ins Formular, erscheint der Dialog Generator auswählen und zeigt neben dem eingebauten Assistenten Befehlsschaltflächen-Assistent auch unseren neuen Assistenten an (siehe Bild 10).

Bild 10: Unser Wizard im Auswahl-Dialog
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
den kompletten Artikel im PDF-Format mit Beispieldatenbank
diesen und alle anderen Artikel mit dem Jahresabo
