{"id":55001594,"date":"2026-06-01T00:00:00","date_gmt":"2026-05-05T20:31:59","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=1594"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"ButtonWizard_programmieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/","title":{"rendered":"Button-Wizard programmieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa\" width=\"1\" height=\"1\" alt=\"\"><b>Im Beitrag &#8222;Schnelle Schaltfl&auml;chen mit Stil&#8220; (www.access-im-unternehmen.de\/1563) haben wir ein Formular vorgestellt, mit dem wir komfortabel Schaltfl&auml;chen anlegen k&ouml;nnen &#8211; mit Icon, Beschriftung, passendem Namen und Ereignisprozedur. Dieses Formular l&auml;sst sich in dieser L&ouml;sung allerdings nur nutzen, wenn es in der gleichen Anwendung enthalten ist, deren Formulare wir damit anpassen wollen. Um dies praktischer zu gestalten, wollen wir die L&ouml;sung in einen Assistenten umwandeln, der beim Hinzuf&uuml;gen eines Buttons zu einem Formular automatisch angezeigt wird. Die dazu notwendigen Schritte beschreiben wir in diesem Beitrag.<\/b><\/p>\n<h2>Steuerelement-Wizards<\/h2>\n<p>Die Grundlagen zum Erstellen von Steuerelement-Assistenten haben wir bereits im Beitrag <b>Steuerelement-Wizards programmieren <\/b>(<b>www.access-im-unternehmen.de\/1593<\/b>) beschrieben.<\/p>\n<h2>L&ouml;sung in Button-Wizards umprogrammieren<\/h2>\n<p>Um aus der Access-Datenbank mit dem Formular zum Erstellen von Schaltfl&auml;chen (siehe Bild 1) einen Steuerelement-Wizard zu machen, benennen wir diese in eine <b>.accda<\/b>-Datei um.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_03\/pic_1594_001.png\" alt=\"Formular zum Erstellen von Schaltfl&auml;chen\" width=\"549,559\" height=\"480,3315\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 1: Formular zum Erstellen von Schaltfl&auml;chen<\/span><\/b><\/p>\n<p>Au&szlig;erdem f&uuml;gen wir eine Tabelle namens <b>USysRegInfo<\/b> hinzu, in der wir die Informationen speichern, die beim Installieren des Wizards &uuml;ber den Add-In-Manager von Access in der Registry landen sollen.<\/p>\n<p>Diese werden beim Start von Access ausgelesen, damit der Wizard an der entsprechenden Stelle aufgerufen wird.<\/p>\n<p>Wie diese Tabelle aufgebaut ist und was die einzelnen Eintr&auml;ge bedeuten, erl&auml;utern wir ausf&uuml;hrlich im oben genannten Beitrag. In diesem Fall enth&auml;lt sie die Eintr&auml;ge aus Bild 2.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_03\/pic_1594_002.png\" alt=\"Die Tabelle USysRegInfo mit den Informationen des Wizards f&uuml;r die Registry\" width=\"700\" height=\"271,9953\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 2: Die Tabelle USysRegInfo mit den Informationen des Wizards f&uuml;r die Registry<\/span><\/b><\/p>\n<p>Wichtig ist, dass der Wert in der Zeile mit dem Wert <b>Library <\/b>im Feld <b>ValName <\/b>mit dem Namen der <b>.accda<\/b>-Datei &uuml;bereinstimmt und das wir die zum Starten verwendete VBA-Funktion genauso nennen wie f&uuml;r <b>Function <\/b>angegeben.<\/p>\n<h2>Startfunktion f&uuml;r den Wizard anlegen<\/h2>\n<p>In einem neuen Modul namens <b>mdlAddIn <\/b>hinterlegen wir die Funktion, die beim Starten des Wizards aufgerufen werden soll. Diese gestalten wir wie in Listing 1. Die Startzeile der Funktion muss genauso aufgebaut sein und muss zwingend die angegebenen Parameter enthalten.<\/p>\n<pre><span style=\"color:blue;\">Public Function <\/span>Autostart_amvButtonWizard(<span style=\"color:blue;\">Optional<\/span> strControlName<span style=\"color:blue;\"> As String<\/span>, <span style=\"color:blue;\">Optional<\/span> strLabelName<span style=\"color:blue;\"> As String<\/span>) _\r\n       <span style=\"color:blue;\"> As Variant<\/span>\r\n    <span style=\"color:blue;\">On Error GoTo<\/span> Fehler\r\n    DoCmd.OpenForm \"frmButtonWizard\", WindowMode:=acDialog, OpenArgs:=strControlName\r\nEnde:\r\n    <span style=\"color:blue;\">Exit Function<\/span>\r\nFehler:\r\n    Select Case Err.Number\r\n        <span style=\"color:blue;\">Case <\/span>0\r\n        <span style=\"color:blue;\">Case <\/span>2501\r\n        <span style=\"color:blue;\">Case Else<\/span>\r\n        <span style=\"color:blue;\">MsgBox<\/span> \"Fehler \" & Err.Number & <span style=\"color:blue;\">vbCrLf<\/span> & Err.Description, vbOKOnly + <span style=\"color:blue;\">vbCr<\/span>itical, _\r\n            \"Fehler beim Start von amvButtonWizard\"\r\n    <span style=\"color:blue;\">End Select<\/span>\r\n<span style=\"color:blue;\">End Function<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 1: Funktion, die beim Start des Wizards aufgerufen wird<\/span><\/b><\/p>\n<p>In der Funktion rufen wir das Formular <b>frmButtonWizard <\/b>als modalen Dialog auf und &uuml;bergeben diesem mit <b>OpenArgs <\/b>den Namen der neu erstellten Schaltfl&auml;che.<\/p>\n<p>Diese Funktion hat eine Fehlerbehandlung, die speziell den Fehler <b>2501 <\/b>nicht behandelt. Dieser tritt auf, wenn wir sp&auml;ter im Ereignis <b>Form_Open <\/b>des Formulars das &Ouml;ffnen mit <b>Cancel = True <\/b>abbrechen. Die entsprechende eingebaute Fehlermeldung wollen wir unterbinden, da wir bereits durch eine Meldung in <b>Form_Open <\/b>darauf hinweisen, dass das Formular nicht ge&ouml;ffnet werden konnte.<\/p>\n<h2>Wizard installieren<\/h2>\n<p>Damit haben wir bereits das Grundger&uuml;st erstellt und k&ouml;nnen den Wizard installieren. Dazu schlie&szlig;en wir die Wizard-Datenbank und &ouml;ffnen eine beliebige andere Access-Datenbank im Administrator-Modus. Hier starten wir &uuml;ber den Ribbon-Befehl <b>Datenbanktools|Add-Ins|Add-Ins|Add-In-Manager <\/b>den Add-In-Manager, klicken auf <b>Neues hinzuf&uuml;gen&#8230; <\/b>und w&auml;hlen unsere <b>.accda<\/b>-Datei aus.<\/p>\n<p>Danach k&ouml;nnen wir pr&uuml;fen, ob der Assistent gestartet wird, wenn wir einem Formular in der Entwurfsansicht einen neuen Button hinzuf&uuml;gen.<\/p>\n<p>Dieser sollte nun im Dialog <b>Generator ausw&auml;hlen <\/b>neben dem eingebauten Eintrag <b>Befehlsschaltfl&auml;chen-Assistent <\/b>erscheinen.<\/p>\n<p>Wenn wir dort den Eintrag <b>amvButtonWizard <\/b>anklicken und das Formular <b>frmButtonWizard <\/b>erscheint, sind wir auf dem richtigen Weg.<\/p>\n<p>Das Formular des Button-Wizards ist allerdings aktuell noch so programmiert, dass einfach eine neue Schaltfl&auml;che angelegt wird, und nicht die durch das Hinzuf&uuml;gen &uuml;ber die Toolbox erzeugte Schaltfl&auml;che angepasst wird. Dies werden wir in den folgenden Abschnitten &auml;ndern.<\/p>\n<h2>Anpassen des Formulars frmButtonWizard<\/h2>\n<p>Um die Anpassung durchzuf&uuml;hren und gleichzeitig testen zu k&ouml;nnen, schlie&szlig;en wir die Datenbank, &uuml;ber die wir den Wizard installiert haben.<\/p>\n<p>Dann &ouml;ffnen wir die <b>.accda<\/b>-Datenbank selbst &#8211; allerdings die Version, die durch den Add-In-Manager in das Add-Ins-Verzeichnis kopiert wurde. Dieses Verzeichnis k&ouml;nnen wir mit der folgenden Prozedur ermitteln, die eine Funktion der nicht dokumentierten Klasse <b>Wizhook <\/b>nutzt:<\/p>\n<pre><span style=\"color:blue;\">Public Sub <\/span>AddInDir()\r\n    WizHook.Key = 51488399\r\n    <span style=\"color:blue;\">Debug.Print<\/span> WizHook.OfficeAddInDir\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p>Diese liefert auf unserem System das folgende Verzeichnis:<\/p>\n<pre>C:\\Users\\[Benutzername]\\AppData\\Roaming\\Microsoft\\AddIns\\<\/pre>\n<p>Die in diesem Verzeichnis enthaltene Datei <b>amvButtonWizard.accda <\/b>&ouml;ffnen wir schlie&szlig;lich.<\/p>\n<p>Hier passen wir das Ereignis <b>Form_Open <\/b>an (siehe Listing 2). Diesem f&uuml;gen wir eine Pr&uuml;fung hinzu, ob mit dem &Ouml;ffnungsargument, das wir mit <b>Me.OpenArgs <\/b>auslesen, der Name des neu erstellten und anzupassenden Steuerelements &uuml;bergeben wurde. Falls nicht, wird das &Ouml;ffnen des Assistenten an dieser Stelle abgebrochen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Open(Cancel<span style=\"color:blue;\"> As Integer<\/span>)\r\n    <span style=\"color:blue;\">Dim <\/span>lngError<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>varPictureData<span style=\"color:blue;\"> As Variant<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>dbc<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n    \r\n    <span style=\"color:blue;\">Set<\/span> dbc = CodeDb\r\n    dbc.Execute \"DELETE FROM tblHistory\", dbFailOnError\r\n    On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n    \r\n    TempVars(\"Form\") = Screen.ActiveForm.Name\r\n    lngError = Err.Number\r\n    <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n    \r\n    <span style=\"color:blue;\">If <\/span>IsNull(Me.OpenArgs)<span style=\"color:blue;\"> Then<\/span>\r\n        <span style=\"color:blue;\">MsgBox<\/span> \"Es wurde kein zu bearbeitender Button &uuml;bergeben.\", vbOKOnly + vbExclamation, \"Kein Button &uuml;bergeben\"\r\n        Cancel = <span style=\"color:blue;\">True<\/span>\r\n        <span style=\"color:blue;\">Exit Sub<\/span>\r\n    <span style=\"color:blue;\">End If<\/span>\r\n        TempVars(\"Steuerelementname\") = Me.OpenArgs\r\n    \r\n    <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> lngError = 0<span style=\"color:blue;\"> Then<\/span>\r\n        <span style=\"color:blue;\">MsgBox<\/span> \"Es ist kein Formular ge&ouml;ffnet, dem ein Button hinzugef&uuml;gt werden kann.\", vbOKOnly + vbExclamation, _\r\n            \"amvButtonWizard - Kein Formular ge&ouml;ffnet.\"\r\n        Cancel = <span style=\"color:blue;\">True<\/span>\r\n        <span style=\"color:blue;\">Exit Sub<\/span>\r\n    <span style=\"color:blue;\">Else<\/span>\r\n        <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> Screen.ActiveForm.CurrentView = 0<span style=\"color:blue;\"> Then<\/span>\r\n            <span style=\"color:blue;\">MsgBox<\/span> \"Das Formular, dem ein Button hinzugef&uuml;gt werden soll, muss in der Entwurfsansicht ge&ouml;ffnet sein.\", _\r\n                vbOKOnly + vbExclamation, \"amvButtonWizard - Formular nicht im Entwurf ge&ouml;ffnet\"\r\n            Cancel = <span style=\"color:blue;\">True<\/span>\r\n            <span style=\"color:blue;\">Exit Sub<\/span>\r\n        <span style=\"color:blue;\">End If<\/span>\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    \r\n    TempVars(\"Picture\") = \"\"\r\n    TempVars(\"Beschriftung\") = \"\"\r\n    \r\n    <span style=\"color:blue;\">Call<\/span> LoadImages\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 2: Prozedur, die beim &Ouml;ffnen des Formulars ausgel&ouml;st wird<\/span><\/b><\/p>\n<p>Anderenfalls speichern wir den Namen dieses Buttons in der <b>TempVar<\/b>-Variablen <b>Steuerelementname<\/b>. Damit sind die Arbeiten an der <b>Form_Open<\/b>-Prozedur abgeschlossen.<\/p>\n<p>Au&szlig;erdem m&uuml;ssen wir in den beiden Prozeduren <b>txtSteuerelementname_Change <\/b>und <b>txtBeschriftung_Change <\/b>die Zeile auskommentieren, welche die <b>TempVars<\/b>-Variable <b>Steuerelementname <\/b>&auml;ndert.<\/p>\n<p>Jetzt m&uuml;ssen wir den Schritt anpassen, der das im Formular konfigurierte Steuerelement anlegt.<\/p>\n<p>Wir wollen hier kein neues Steuerelement anlegen, sondern die durch den Benutzer angelegte Schaltfl&auml;che soll nach den Angaben im Formular angepasst werden.<\/p>\n<h2>Schaltfl&auml;che anpassen statt anlegen<\/h2>\n<p>Wie erw&auml;hnt, hat die bisherige L&ouml;sung einen neuen Button angelegt &#8211; wir wollen aber den &uuml;ber die Toolbox angelegten Button anpassen. So hat der Benutzer auch die volle Kontrolle dar&uuml;ber, wo das Steuerelement angelegt wird.<\/p>\n<p>Diese Aktion findet in der Prozedur <b>SchaltflaecheAnlegen <\/b>statt.<\/p>\n<p>Hier k&ouml;nnen wir zun&auml;chst den Aufruf der Prozedur <b>PositionLetzterButton <\/b>entfernen, die daf&uuml;r gedacht war, die neue Schaltfl&auml;che unter der zuletzt angelegten Schaltfl&auml;che einzuf&uuml;gen &#8211; da wir nun selbst bestimmen, wo die neue Schaltfl&auml;che angelegt werden soll, brauchen wir diese Funktion nicht mehr. Damit k&ouml;nnen wir auch die Tabelle <b>tblHistory <\/b>aus der Anwendung entfernen und alle Anweisungen, die auf diese Tabelle zugreifen.<\/p>\n<p>Die Prozedur sieht jetzt wie in Listing 3 aus. Sie pr&uuml;ft, ob bereits eine Schaltfl&auml;che mit dem vorgesehenen Namen vorhanden ist. In diesem Fall wird der Vorgang abgebrochen.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>SchaltflaecheAnlegen()\r\n    <span style=\"color:blue;\">Dim <\/span>frm<span style=\"color:blue;\"> As <\/span>Access.Form\r\n    <span style=\"color:blue;\">Dim <\/span>cmd<span style=\"color:blue;\"> As <\/span>Access.CommandButton\r\n    <span style=\"color:blue;\">Dim <\/span>prp<span style=\"color:blue;\"> As <\/span>Property\r\n    <span style=\"color:blue;\">Dim <\/span>strPicture<span style=\"color:blue;\"> As String<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>lngPictureID<span style=\"color:blue;\"> As Long<\/span>\r\n    <span style=\"color:blue;\">Dim <\/span>db<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n    <span style=\"color:blue;\">Dim <\/span>dbc<span style=\"color:blue;\"> As <\/span>DAO.Database\r\n        \r\n    <span style=\"color:blue;\">Set<\/span> db = CurrentDb\r\n    <span style=\"color:blue;\">Set<\/span> dbc = CodeDb\r\n    \r\n    <span style=\"color:blue;\">If <\/span>SchaltflaecheSchonVorhanden(Me.txtSteuerelementname) = <span style=\"color:blue;\">True<\/span><span style=\"color:blue;\"> Then<\/span>\r\n        <span style=\"color:blue;\">Exit Sub<\/span>\r\n    <span style=\"color:blue;\">End If<\/span>\r\n    \r\n    <span style=\"color:blue;\">Set<\/span> frm = Forms(TempVars(\"Form\"))    \r\n    <span style=\"color:blue;\">Set<\/span> cmd = frm.Controls(TempVars(\"Steuerelementname\"))    \r\n    <span style=\"color:blue;\">With<\/span> cmd\r\n        For Each prp In cmdVorschau.Properties\r\n            Select Case prp.Name\r\n                <span style=\"color:blue;\">Case <\/span>\"Top\", \"Left\"\r\n                <span style=\"color:blue;\">Case <\/span>\"EventProcPrefix\", \"ControlType\", \"Section\", \"RowStart\", \"RowEnd\", \"ColumnStart\", \"ColumnEnd\", _\r\n                    \"TabIndex\", \"InSelection\", \"Name\"\r\n                <span style=\"color:blue;\">Case Else<\/span>\r\n                    On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n                    .Properties(prp.Name) = prp.Value\r\n                    <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n            <span style=\"color:blue;\">End Select<\/span>\r\n        <span style=\"color:blue;\">Next<\/span> prp\r\n        strPicture = Me.cmdVorschau.Picture        \r\n        <span style=\"color:blue;\">If <\/span><span style=\"color:blue;\">Not<\/span> strPicture = \"(keines)\"<span style=\"color:blue;\"> Then<\/span>\r\n            lngPictureID = dbc.OpenRecordset(\"SELECT ID FROM \" & cStrResourcesTable & \" WHERE Name = '\" _\r\n                & TempVars(\"Picture\") & \"'\", dbOpenDynaset).Fields(\"ID\")\r\n            BildKopierenVonResourceZuResource dbc, db, cStrResourcesTable, \"MSysResources\", lngPictureID\r\n        <span style=\"color:blue;\">End If<\/span>\r\n        .Picture = TempVars(\"Picture\")\r\n        .Name = Nz(Me.txtSteuerelementname, \"\")\r\n        .OnClick = \"[Event Procedure]\"\r\n        .Parent.HasModule = <span style=\"color:blue;\">True<\/span>\r\n        <span style=\"color:blue;\">Call<\/span> EreignisprozedurAnlegen(TempVars(\"Form\"), Me.txtSteuerelementname)\r\n        <span style=\"color:blue;\">Call<\/span> AccessAktivieren\r\n    End <span style=\"color:blue;\">With<\/span>\r\n    \r\n    DoCmd.Close acForm, Me.Name\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p><b><span style=\"color:darkgrey;\">Listing 3: Prozedur zum Anpassen des angelegten Steuerelements<\/span><\/b><\/p>\n<p>Dann referenziert sie das zu bearbeitende Formular und das neue Steuerelement mit den Variablen <b>frm<\/b> und <b>cmd<\/b>.   <\/p>\n<p>F&uuml;r das mit <b>cmd <\/b>referenzierte Steuerelement stellt sie alle Eigenschaften mit wenigen Ausnahmen auf die Eigenschaften ein, die wir f&uuml;r die Vorschau-Schaltfl&auml;che im Formular <b>frmButtonWizard <\/b>eingestellt haben.<\/p>\n<p>Danach ermittelt sie das Bild der Vorschau-Schaltfl&auml;che, kopiert dieses in die Tabelle <b>MSysResources <\/b>der Zieldatenbank und stellt die Eigenschaft <b>Picture <\/b>der neuen Schaltfl&auml;che auf dieses ein.<\/p>\n<p>Schlie&szlig;lich legt sie noch den Namen der Schaltfl&auml;che fest und f&uuml;gt die Ereignisprozedur hinzu.<\/p>\n<p>Danach wird das Wizard-Formular geschlossen.<\/p>\n<h2>Weitere &Auml;nderungen am Code der L&ouml;sung<\/h2>\n<p>Es wurden noch einige weitere &Auml;nderungen am Code durchgef&uuml;hrt, die sich im Wesentlichen auf Vereinfachungen und Anpassungen f&uuml;r die Benutzung als Schaltfl&auml;chen-Wizard beziehen.<\/p>\n<h2>Einsatz der L&ouml;sung<\/h2>\n<p>Die L&ouml;sung k&ouml;nnen wir nun immer einsetzen, wenn wir eine neue Schaltfl&auml;che zum Formular hinzuf&uuml;gen oder wenn wir eine bestehende Schaltfl&auml;che anpassen wollen.<\/p>\n<p>Zum Hinzuf&uuml;gen einer neuen Schaltfl&auml;che w&auml;hlen wir diese aus der Toolbox aus und klicken an die gew&uuml;nschte Stelle im Formularentwurf. Dies zeigt die Auswahl der verf&uuml;gbaren Wizards an.<\/p>\n<p>Voraussetzung daf&uuml;r ist, dass wir die Steuerelement-Assistenten aktiviert haben &#8211; dazu aktivieren wir die Option <b>Steuerelement-Assistenten verwenden <\/b>in der Toolbox. <\/p>\n<p>Wir k&ouml;nnen auch daf&uuml;r sorgen, dass der Assistent direkt aufgerufen wird, sobald wir eine neue Schaltfl&auml;che anlegen. Daf&uuml;r m&uuml;ssen wir alle anderen Schaltfl&auml;chen-Assistenten entfernen, zum Beispiel den eingebauten Assistenten namens <b>Befehlsschaltfl&auml;chen-Assistent<\/b>. Dazu &ouml;ffnen wir die Registry und gehen zum entsprechenden Zweig, auf unserem System:<\/p>\n<pre>HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Office\\ClickToRun\\REGISTRY\\MACHINE\\Software\\Wow6432Node\\Microsoft\\Office\\16.0\\Access\\Wizards\\Control Wizards\\CommandButton<\/pre>\n<p>Diesen l&ouml;schen wir wie in Bild 3.<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_03\/pic_1594_003.png\" alt=\"L&ouml;schen des eingebauten Schaltfl&auml;chen-Assistenten\" width=\"649,559\" height=\"453,6135\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 3: L&ouml;schen des eingebauten Schaltfl&auml;chen-Assistenten<\/span><\/b><\/p>\n<p>Danach erscheint der <b>amvButtonWizard <\/b>direkt und wir k&ouml;nnen die gew&uuml;nschten Einstellungen vornehmen, bevor wir diese mit einem Klick auf <b>Schaltfl&auml;che anlegen <\/b>&uuml;bernehmen (siehe Bild 4).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_03\/pic_1594_004.png\" alt=\"Anpassen einer neu hinzugef&uuml;gten Schaltfl&auml;che\" width=\"599,559\" height=\"597,637\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 4: Anpassen einer neu hinzugef&uuml;gten Schaltfl&auml;che<\/span><\/b><\/p>\n<p>Da wir f&uuml;r den Assistenten in der Tabelle <b>USysRegInfo <\/b>f&uuml;r die Zeile mit dem Wert <b>Can Edit <\/b>im Feld <b>ValName <\/b>den Wert <b>1 <\/b>eingestellt haben, k&ouml;nnen wir diesen auch f&uuml;r vorhandene Schaltfl&auml;chen aufrufen.<\/p>\n<p>Dazu brauchen wir einfach nur das Kontextmen&uuml; der Schaltfl&auml;che anzuzeigen und den Eintrag <b>Aufbauen&#8230; <\/b>auszuw&auml;hlen.<\/p>\n<p>Auch hier wird der Assistent nun direkt angezeigt. Genau wie bei einer neu angelegten Schaltfl&auml;che k&ouml;nnen wir nun die gew&uuml;nschten Einstellungen vornehmen und diese mit einem Klick auf <b>Schaltfl&auml;che anlegen <\/b>&uuml;bertragen (siehe Bild 5).<\/p>\n<p class=\"image\"><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2026_03\/pic_1594_005.png\" alt=\"Anpassen einer vorhandenen Schaltfl&auml;che\" width=\"424,5589\" height=\"274,9984\" \/><\/p>\n<p><b><span style=\"color:darkgrey;\">Bild 5: Anpassen einer vorhandenen Schaltfl&auml;che<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Dieser Beitrag zeigt, wie wir aus der L&ouml;sung aus dem Beitrag <b>Steuerelement-Wizards programmieren <\/b>(<b>www.access-im-unternehmen.de\/1593<\/b>) einen Assistenten erstellen, der beim Anlegen neuer Schaltfl&auml;chen oder beim Bearbeiten vorhandener Schaltfl&auml;chen automatisch aufgerufen wird.<\/p>\n<p>Diesen Wizard k&ouml;nnen wir auch als Blaupause f&uuml;r weitere Assistenten nutzen, mit denen wir die Eigenschaften von Steuerelementen beim Anlegen oder auch nachtr&auml;glich anpassen k&ouml;nnen.<\/p>\n<p>Wir k&ouml;nnen damit zum Beispiel Listenfelder, Kombinationsfelder, Unterformulare und viele mehr nach unseren W&uuml;nschen gestalten.<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>amvButtonWizard.accda<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/046056E1-3DB5-4A86-A0D6-3736118F4023\/aiu_1594.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im Beitrag &#8222;Schnelle Schaltfl&auml;chen mit Stil&#8220; (www.access-im-unternehmen.de\/1563) haben wir ein Formular vorgestellt, mit dem wir komfortabel Schaltfl&auml;chen anlegen k&ouml;nnen &#8211; mit Icon, Beschriftung, passendem Namen und Ereignisprozedur. Dieses Formular l&auml;sst sich in dieser L&ouml;sung allerdings nur nutzen, wenn es in der gleichen Anwendung enthalten ist, deren Formulare wir damit anpassen wollen. Um dies praktischer zu gestalten, wollen wir die L&ouml;sung in einen Assistenten umwandeln, der beim Hinzuf&uuml;gen eines Buttons zu einem Formular automatisch angezeigt wird. Die dazu notwendigen Schritte beschreiben wir in diesem Beitrag.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662026,66032026,44000027],"tags":[],"class_list":["post-55001594","post","type-post","status-publish","format-standard","hentry","category-662026","category-66032026","category-Loesungen"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Button-Wizard programmieren - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Button-Wizard programmieren\" \/>\n<meta property=\"og:description\" content=\"Im Beitrag &quot;Schnelle Schaltfl&auml;chen mit Stil&quot; (www.access-im-unternehmen.de\/1563) haben wir ein Formular vorgestellt, mit dem wir komfortabel Schaltfl&auml;chen anlegen k&ouml;nnen - mit Icon, Beschriftung, passendem Namen und Ereignisprozedur. Dieses Formular l&auml;sst sich in dieser L&ouml;sung allerdings nur nutzen, wenn es in der gleichen Anwendung enthalten ist, deren Formulare wir damit anpassen wollen. Um dies praktischer zu gestalten, wollen wir die L&ouml;sung in einen Assistenten umwandeln, der beim Hinzuf&uuml;gen eines Buttons zu einem Formular automatisch angezeigt wird. Die dazu notwendigen Schritte beschreiben wir in diesem Beitrag.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-05T20:31:59+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Button-Wizard programmieren\",\"datePublished\":\"2026-05-05T20:31:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/\"},\"wordCount\":1592,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/a204e1e9ef764ab2a84eca982ac498fa\",\"articleSection\":[\"2026\",\"3\\\/2026\",\"L\u00f6sungen\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/\",\"name\":\"Button-Wizard programmieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/a204e1e9ef764ab2a84eca982ac498fa\",\"datePublished\":\"2026-05-05T20:31:59+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/a204e1e9ef764ab2a84eca982ac498fa\",\"contentUrl\":\"http:\\\/\\\/vg01.met.vgwort.de\\\/na\\\/a204e1e9ef764ab2a84eca982ac498fa\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/ButtonWizard_programmieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Button-Wizard programmieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Button-Wizard programmieren - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/","og_locale":"de_DE","og_type":"article","og_title":"Button-Wizard programmieren","og_description":"Im Beitrag \"Schnelle Schaltfl&auml;chen mit Stil\" (www.access-im-unternehmen.de\/1563) haben wir ein Formular vorgestellt, mit dem wir komfortabel Schaltfl&auml;chen anlegen k&ouml;nnen - mit Icon, Beschriftung, passendem Namen und Ereignisprozedur. Dieses Formular l&auml;sst sich in dieser L&ouml;sung allerdings nur nutzen, wenn es in der gleichen Anwendung enthalten ist, deren Formulare wir damit anpassen wollen. Um dies praktischer zu gestalten, wollen wir die L&ouml;sung in einen Assistenten umwandeln, der beim Hinzuf&uuml;gen eines Buttons zu einem Formular automatisch angezeigt wird. Die dazu notwendigen Schritte beschreiben wir in diesem Beitrag.","og_url":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2026-05-05T20:31:59+00:00","og_image":[{"url":"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"10\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Button-Wizard programmieren","datePublished":"2026-05-05T20:31:59+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/"},"wordCount":1592,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa","articleSection":["2026","3\/2026","L\u00f6sungen"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/","url":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/","name":"Button-Wizard programmieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa","datePublished":"2026-05-05T20:31:59+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#primaryimage","url":"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa","contentUrl":"http:\/\/vg01.met.vgwort.de\/na\/a204e1e9ef764ab2a84eca982ac498fa"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/ButtonWizard_programmieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Button-Wizard programmieren"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55001594"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55001594\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55001594"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55001594"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55001594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}