{"id":55000233,"date":"2014-04-01T00:00:00","date_gmt":"2020-01-24T15:59:06","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=233"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Programmieren_mit_Makros_Teil_I","status":"publish","type":"post","link":"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html","title":{"rendered":"Programmieren mit Makros, Teil I"},"content":{"rendered":"<p class='introduction'>Makros sind eine M&ouml;glichkeit, einfache Vorg&auml;nge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung &#8211; zum Beispiel in Form zweier Spezialmakros namens <b>AutoExec <\/b>und <b>AutoKeys<\/b>, die beim Start beziehungsweise beim Ausf&uuml;hren von Tastenkombination aufgerufen werden k&ouml;nnen. Da Microsoft mit Access 2010 die Webdatenbanken eingef&uuml;hrt hat, die ausschlie&szlig;lich mit Makros programmiert werden k&ouml;nnen, wollen wir an dieser Stelle eine Einf&uuml;hrung in die Programmierung mit Makros bieten.<\/p>\n<h2>Beispieldatenbank<\/h2>\n<p>Die Beispiele dieses Artikels finden Sie in der Datenbank <b>1402_Makros.mdb<\/b>.<\/p>\n<h2>Makros und VBA<\/h2>\n<p>Makros und VBA eignen sich beide zur Programmierung von Ereignissen in Access. In Abgrenzung zu anderen Office-Anwendungen wie Word, Excel und Co. m&uuml;ssen wir hier jedoch eine kurze Begriffskl&auml;rung vornehmen: Bei den &uuml;brigen Office-Anwendungen spricht man in Zusammenhang mit einer VBA-Prozedur von einem Makro. Dort lassen sich fast alle Aktionen als Makro aufzeichnen, was aber bedeutet, dass die Office-Anwendung eine VBA-Prozedur erstellt, welche die in der Anwendung durchgef&uuml;hrten T&auml;tigkeiten in Form von VBA-Anweisungen enth&auml;lt.<\/p>\n<p>Ein solches Word- oder Excel-Makro ist nicht mit einem Makro in Access zu vergleichen. Unter Access spricht man unter VBA zum Beispiel von Prozeduren oder Funktionen, gegebenenfalls auch von Routinen, aber niemals von Makros. <\/p>\n<p>Ein Makro ist unter Access ein eigener Objekttyp, dessen Vertreter im Navigationsbereich eine eigene Kategorie besitzen. Die Anweisungen eines Makros werden nicht in Form von Codezeilen eingegeben, sondern als Makrobefehle eingegeben beziehungsweise ausgew&auml;hlt.<\/p>\n<h2>Spezialmakros<\/h2>\n<p>Die einzigen beiden F&auml;lle, in denen wir bislang auf die Programmierung von Makros eingegangen sind, finden Sie in den Artikeln <b>Aktion beim Start: Das AutoExec-Makro <\/b>und <b>AutoKeys: Globale Tastenkombinationen<\/b>. Das <b>AutoExec<\/b>-Makro wird direkt beim Start von Access ausgef&uuml;hrt.<\/p>\n<p>Sie k&ouml;nnen damit also Aktionen ausl&ouml;sen, die in Zusammenhang mit dem Start ausgef&uuml;hrt werden sollen, also etwa das Neuverkn&uuml;pfen mit einer Backend-Datenbank et cetera. Mit dem <b>AutoKeys<\/b>-Makro definieren Sie Tastenkombinationen, die global, also anwendungsweit, g&uuml;ltig sind.<\/p>\n<p>Wenn Sie also etwa verhindern m&ouml;chten, dass der Benutzer mit der Tastenkombination <b>Strg + G<\/b> das Direktfenster &ouml;ffnet, k&ouml;nnen Sie diese Tastenkombination im <b>AutoKeys<\/b>-Makro entsprechend umbiegen. Im Gegensatz zu den Tastenkombinationen, die Sie in Formularen mit Ereignissen wie <b>Bei Taste ab <\/b>oder <b>Bei Taste auf <\/b>abfangen k&ouml;nnen, werden die mit dem <b>AutoKeys<\/b>-Makro definierten Tastenkombinationen zu jedem Zeitpunkt ausgel&ouml;st und nicht nur dann, wenn ein bestimmtes Formular den Fokus besitzt.<\/p>\n<h2>Makros ab Access 2007<\/h2>\n<p>Mit Access 2007 hat Microsoft begonnen, die  M&ouml;glichkeiten der Makros aufzuwerten. Wenn Sie bereits fr&uuml;her mit Makros programmiert haben, sind die folgenden Hinweise f&uuml;r Sie interessant &#8211; aber auch f&uuml;r alle anderen:<\/p>\n<ul>\n<li>Makros k&ouml;nnen nicht nur gespeichert und als Wert von Ereigniseigenschaften angegeben werden. Sie k&ouml;nnen Makros auch in die Ereignisse von Formularen, Berichten und Steuerelementen einbetten. Das Makro wird dann nicht mehr als eigener Eintrag in der Kategorie Makros des Navigationsbereichs angezeigt, sondern direkt im Formular oder im Bericht gespeichert.<\/li>\n<li>Der VBA-Code und bestimmte Makrobefehle werden in Access-Datenbanken nicht ausgef&uuml;hrt, wenn diese nicht als vertrauensw&uuml;rdig eingestuft sind. Sie k&ouml;nnen im Makro-Editor nun angeben, dass nur solche Makros angezeigt werden, die auch bei nicht vertrauensw&uuml;rdigen Datenbanken ausgef&uuml;hrt werden k&ouml;nnen.<\/li>\n<li>Mit Access 2007 gibt es erstmals eine Fehlerbehandlung und die M&ouml;glichkeit, Makros zu debuggen. Makroaktionen wie <b>BeiFehler<\/b> oder <b>ClearMacroError <\/b>helfen dabei ebenso wie <b>MakroEinzelschritt<\/b>, mit der Sie innerhalb des Makros (&auml;hnlich einer Haltemarke) in den Einzelschrittmodus wechseln k&ouml;nnen.<\/li>\n<li>Bis Access 2003 konnten Makros weder auf Variablen zugreifen noch solche mit Werten f&uuml;llen. Mit Access 2007 wurden die sogenannten <b>Tempor&auml;ren Variablen <\/b>eingef&uuml;hrt. Diesen k&ouml;nnen Sie Werte zuweisen und diese auch wieder abfragen. Interessant ist, dass es auch in VBA ein entsprechendes Objekt gibt, sodass ein Austausch zwischen VBA-Routinen und Makros erfolgen kann.<\/li>\n<\/ul>\n<h2>Makros in Access 2010<\/h2>\n<p>Mit Access 2010 geht der Reigen der Neuerungen im Bereich der Makros weiter:<\/p>\n<ul>\n<li>Die wichtigste Neuerung ist der neue Makro-Editor. Er liefert eine wesentlich bessere Benutzeroberfl&auml;che zum Erstellen von Makros, hier vor allem bei der Umsetzung von Bedingungen und Verschachtelungen.<\/li>\n<li>Makroaktionen k&ouml;nnen Sie direkt aus der Liste im Bereich der zum Makro hinzugef&uuml;gten Befehle ausw&auml;hlen (siehe Bild 1).<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_001.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_001.png\" alt=\"Ausw&auml;hlen einer Makroaktion direkt im Makro-Editor ...\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 1: Ausw&auml;hlen einer Makroaktion direkt im Makro-Editor &#8230;<\/p>\n<li>Es gibt aber auch einen &uuml;bersichtlichen Katalog, in dem die Makros nach Kategorien sortiert sind (siehe Bild 2).<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_002.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_002.png\" alt=\"... oder aus dem Aktionskatalog.\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 2: &#8230; oder aus dem Aktionskatalog.<\/p>\n<li>Zus&auml;tzlich k&ouml;nnen Sie in Makros nun auch IntelliSense nutzen. Damit greifen Sie beispielsweise auf alle eingebauten Access-Funktionen zu, aber auch auf benutzerdefinierte VBA-Funktionen zu. Au&szlig;erdem stehen die Objektnamen etwa von Tabellen, Abfrage, Formularen et cetera zur Auswahl (siehe Bild 3).<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_003.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_003.png\" alt=\"IntelliSense im Makro-Editor von Access 2010\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 3: IntelliSense im Makro-Editor von Access 2010<\/p>\n<li>Es gibt eine Wenn-Bedingung (mit Sonst- und Sonst Wenn-Zweigen), die auch verschachtelt angeordnet werden k&ouml;nnen.<\/li>\n<li>Sie k&ouml;nnen bereits erstellte Makros ganz einfach als Untermakros zu weiteren Makros hinzuf&uuml;gen. Diese werden im Aktionskatalog in der Kategorie <b>In diesen Datenbank|Makros <\/b>eingeblendet.<\/li>\n<li>Sie k&ouml;nnen Teile des Makrocodes kopieren und an anderer Stelle wieder einf&uuml;gen. Das dabei verwendete Format ist XML. Sie k&ouml;nnen ein Makro also auch kopieren und per E-Mail an einen anderen Entwickler versenden.<\/li>\n<li>Eine weitere wichtige Neuerung sind die Datenmakros, die &auml;hnlich etwa wie die Trigger im SQL Server arbeiten. Diese Makros werden Tabellen zugeordnet und bei bestimmten Datenaktionen ausgel&ouml;st &#8211; wie etwa das Anlegen eines neuen oder das &auml;ndern oder L&ouml;schen eines bestehenden Datensatzes.<\/li>\n<\/ul>\n<h2>Makros in Access 2013<\/h2>\n<p>Unter Access 2013 gab es keine nennenswerten Neuerungen. Anscheinend sind sogar drei Makrobefehle weggefallen (mehr zu den verschiedenen Makro-Befehlen weiter unten):<\/p>\n<ul>\n<li><b>SammelnDaten&uuml;berEmail<\/b><\/li>\n<li><b>StartenNeuerWorkflow<\/b><\/li>\n<li><b>WorkflowAufgaben<\/b><\/li>\n<\/ul>\n<h2>Verschiedene Makro-Arten<\/h2>\n<p>Unter Access gibt es die folgenden Makro-Arten:<\/p>\n<ul>\n<li>normale Makros, die &uuml;ber den Men&uuml;befehl <b>Erstellen|Makros und Code|Makro <\/b>angelegt und unter einem von Ihnen vergebenen Namen gespeichert und im Navigationsbereich angezeigt werden<\/li>\n<li>reine Ereignis-Makros, die als Makro f&uuml;r ein Ereignis eines Formulars, Berichts oder Steuerelements angelegt werden. Diese erscheinen nicht im Navigationsbereich.<\/li>\n<li>Datenmakros sind Makros, die durch Ereignisse in Tabellen ausgel&ouml;st werden, also beim Anf&uuml;gen, L&ouml;schen oder &auml;ndern von Datens&auml;tzen.<\/li>\n<li>benannte Makros sind Makros, die Sie im Kontext einer bestimmten Tabelle anlegen und die entweder durch ein Datenmakro oder durch ein herk&ouml;mmliches Makro ausgel&ouml;st werden k&ouml;nnen.<\/li>\n<\/ul>\n<h2>Makro erstellen<\/h2>\n<p>Die folgenden Beispiele wurden unter Access 2010 durchgef&uuml;hrt. Wir m&ouml;chten erstens die neuen M&ouml;glichkeiten untersuchen und zweitens die aktuelle Benutzeroberfl&auml;che zur Erstellung von Makros nutzen. F&uuml;r einen ersten &uuml;berblick der Benutzeroberfl&auml;che erstellen Sie zun&auml;chst mit dem Ribbon-Eintrag <b>Erstellen|Makros und Code|Makro <\/b>ein neues Makro. F&uuml;gen Sie diesem nun per Auswahl &uuml;ber das Kombinationsfeld <b>Neue Aktion hinzuf&uuml;gen <\/b>einfach den Befehl <b>Meldungsfeld <\/b>hinzu.<\/p>\n<p>Access zeigt nun direkt an Ort und Stelle die vier Eigenschaften f&uuml;r die <b>Meldungsfeld<\/b>-Makroaktion an (siehe Bild 4): <b>Meldung, Signalton<\/b>, <b>Typ <\/b>und <b>Titel<\/b>.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_004.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_004.png\" alt=\"Ein erstes Makro mit einem Meldungsfeld\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 4: Ein erstes Makro mit einem Meldungsfeld<\/p>\n<p>Die Eigenschaften sollten von der VBA-Funktion <b>MsgBox <\/b>bekannt sein, daher gehen wir an dieser Stelle nicht n&auml;her auf die Optionen ein. Speichern Sie das Makro unter dem Namen <b>macMeldungsfeld<\/b>.<\/p>\n<h2>Makro aufrufen<\/h2>\n<p>Die einfachste M&ouml;glichkeit, ein Makro aufzurufen, ist ein Doppelklick auf den Namen des Makros im Navigationsbereich von Access (siehe Bild 5).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_005.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_005.png\" alt=\"Makro per Doppeklick starten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 5: Makro per Doppeklick starten<\/p>\n<p>Nat&uuml;rlich k&ouml;nnen Sie ein Makro auch bereits beim Erstellen durch einen Mausklick auf den Ribbon-Befehl <b>Ent-wurf|Tools|Aus-f&uuml;hren <\/b>aufrufen.<\/p>\n<h2>Makro per VBA aufrufen<\/h2>\n<p>Eine weitere M&ouml;glichkeit f&uuml;r den Aufruf eines Makros ist die Methode <b>RunMacro <\/b>des <b>DoCmd<\/b>-Objekts. Den folgenden Befehl k&ouml;nnen Sie beispielsweise im Direktbereich des VBA-Editors absetzen, aber auch in Funktionen oder Prozeduren integrieren:<\/p>\n<pre>DoCmd.RunMacro \"<Makroname>\"<\/pre>\n<p>Der Beispielaufruf aus Bild 6 zeigt, dass die <b>RunMacro<\/b>-Methode neben dem Makronamen noch zwei weitere Parameter anbietet:<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_006.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_006.png\" alt=\"Aufruf eines Makros im Direktbereich des VBA-Editors\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 6: Aufruf eines Makros im Direktbereich des VBA-Editors<\/p>\n<ul>\n<li><b>RepeatCount<\/b>: Gibt an, wie oft das Makro ausgef&uuml;hrt werden soll.<\/li>\n<li><b>RepeatExpression<\/b>: Enth&auml;lt einen Ausdruck, der bei jeder der in <b>RepeatCount <\/b>angegebenen Ausf&uuml;hrungen ausgewertet wird. Wenn der Ausdruck den Wert False enth&auml;lt, wird die wiederholte Ausf&uuml;hrung abgebrochen.<\/li>\n<\/ul>\n<p>Sie k&ouml;nnen ein Makro auch von einem anderen Makro aus aufrufen. Wenn Sie also etwa unser Beispiel-makro <b>macMeldungsfeld <\/b>von einem anderen Makro etwa namens <b>macAnderesMakroStarten <\/b>aus starten m&ouml;chten, legen Sie dieses Makro an und f&uuml;gen diesem die Makroaktion <b>Ausf&uuml;hrenMakro<\/b> mit dem Namen des auszuf&uuml;hrenden Makros als Parameter hinzu (siehe Bild 7).<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_007.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_007.png\" alt=\"Aufrufen eines anderen Makros von einem Makro aus\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 7: Aufrufen eines anderen Makros von einem Makro aus<\/p>\n<h2>Makro per Kontextmen&uuml; aufrufen<\/h2>\n<p>Wenn Sie in Ihrer Anwendung Kontextmen&uuml;s verwenden, k&ouml;nnen Sie &uuml;ber die dort enthaltenen Eintr&auml;ge nicht nur VBA-Funktionen, sondern auch Makros aufrufen.<\/p>\n<p>In den neueren Access-Versionen, auf die wir uns hier beziehen, legen Sie Kontextmen&uuml;s per VBA an (siehe Artikel <b>Kontextmen&uuml;s<\/b>). Dort geben Sie die aufzurufende Prozedur mit der Eigenschaft <b>OnAction <\/b>des jeweiligen Steuerelements an. Dies sieht dann etwa wie in Listing 1 aus &#8211; siehe das Formular <b>frmMakroPerKontextmenue <\/b>in der Beispieldatenbank. Die Prozedur ben&ouml;tigt einen Verweis auf die Bibliothek <b>Microsoft Office x.0 Object Library<\/b> und zeigt gleich beim &ouml;ffnen des Formulars das entsprechende Kontextmen&uuml; mit dem Eintrag zum Ausl&ouml;sen des Makros <b>macMeldungsfeld <\/b>an.<\/p>\n<pre><span style=\"color:blue;\">Private Sub <\/span>Form_Load()\r\n     <span style=\"color:blue;\">Dim <\/span>cbr<span style=\"color:blue;\"> As <\/span>CommandBar\r\n     <span style=\"color:blue;\">Dim <\/span>cbc<span style=\"color:blue;\"> As <\/span>CommandBarControl\r\n     On Error Resume <span style=\"color:blue;\">Next<\/span>\r\n     CommandBars(\"cbrMakro\").Delete\r\n     <span style=\"color:blue;\">On Error GoTo<\/span> 0\r\n     <span style=\"color:blue;\">Set<\/span> cbr = CommandBars.Add(\"cbrMakro\", msoBarPopup, False, <span style=\"color:blue;\">True<\/span>)\r\n     <span style=\"color:blue;\">Set<\/span> cbc = cbr.Controls.Add(msoControlButton)\r\n     <span style=\"color:blue;\">With<\/span> cbc\r\n         .Caption = \"Makro ausf&uuml;hren\"\r\n         .OnAction = \"macMeldungsfeld\"\r\n     End <span style=\"color:blue;\">With<\/span>\r\n     cbr.ShowPopup\r\n<span style=\"color:blue;\">End Sub<\/span><\/pre>\n<p class='imagetext'>Listing 1: Diese Prozedur zeigt gleich beim Laden eines Formulars ein Kontextmen&uuml; mit einem Befehl an, der ein Makro aufruft.<\/p>\n<h2>Makros per Ereignis aufrufen<\/h2>\n<p>Makros k&ouml;nnen in Desktop-Datenbanken als Alternative f&uuml;r VBA-Ereignisprozeduren verwendet werden. In den sogenannten Webdatenbanken k&ouml;nnen Sie ausschlie&szlig;lich Makros zur Implementierung von Ereignissen verwenden.<\/p>\n<p>Wenn Sie ein Makro durch ein Ereignis eines Formulars, Berichts oder Steuerelements ausl&ouml;sen m&ouml;chten, haben Sie zwei M&ouml;glichkeiten:<\/p>\n<ul>\n<li>Sie legen das Makro als eigenes Makro an (etwa mit dem Ribbon-Eintrag <b>Erstellen|Makros und Code|Makro<\/b>) und speichern es unter dem gew&uuml;nschten Namen. Dann w&auml;hlen Sie den Namen des Makros als Wert der entsprechenden Ereigniseigenschaft aus.<\/li>\n<li>Sie klicken auf die Schaltfl&auml;che rechts neben der Ereigniseigenschaft und w&auml;hlen aus dem nun erscheinenden Dialog den Eintrag Makro-Generator aus (siehe Bild 8). Es erscheint nun der Makro-Editor, mit dem Sie das Makro programmieren k&ouml;nnen.<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_008.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_008.png\" alt=\"Makro f&uuml;r ein Ereignis festlegen\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 8: Makro f&uuml;r ein Ereignis festlegen<\/p>\n<\/ul>\n<p>In letzterem Fall wird das Makro nicht unter einem von Ihnen vergebenen Namen gespeichert, sondern direkt mit dem Formular oder Bericht. Diese sogenannten eingebetteten Makros gab es in dieser Form zuvor nicht.<\/p>\n<p>Mit den neueren Access-Versionen k&ouml;nnen Sie au&szlig;erdem auch Makros f&uuml;r Steuerelemente festlegen, die quasi in die Steuerelemente eingebettet werden &#8211; das bedeutet, dass Sie ein Steuerelement von einem Formular zum n&auml;chsten kopieren k&ouml;nnen und das Makro gleich mit kopiert wird.<\/p>\n<h2>Datenmakros aufrufen<\/h2>\n<p>Datenmakros k&ouml;nnen Sie nicht &#8222;aufrufen&#8220;, sondern lediglich ausl&ouml;sen &#8211; und zwar durch das entsprechende Ereignis einer Tabelle (Anf&uuml;gen, Bearbeiten oder L&ouml;schen von Daten). Die einzelnen Ereignisse schauen wir uns sp&auml;ter an.<\/p>\n<h2>Benannte Makros aufrufen<\/h2>\n<p>Benannte Makros, also solche Makros, die Sie im Kontext einer Tabelle erstellt haben, rufen Sie mit der Makroaktion <b>Ausf&uuml;hrenDatenmakro <\/b>auf.<\/p>\n<h2>Mit dem Makro-Editor arbeiten<\/h2>\n<p>Der Makro-Editor von Access 2010 und j&uuml;nger bietet gegen&uuml;ber dem Vorg&auml;nger eine Reihe neuer Features an (dieser Hinweis f&uuml;r alle, die bereits mit &auml;lteren Access-Versionen gearbietet haben).<\/p>\n<p>Wenn Sie einmal &#8211; wie weiter oben beschrieben &#8211; ein neues Makro angelegt haben, k&ouml;nnen Sie gleich mit dem Hinzuf&uuml;gen von Makroaktionen beginnen. Zun&auml;chst ist es hilfreich, die dabei zur Verf&uuml;gung stehenden Ribbon-Elemente kennenzulernen. Diese sehen etwa unter Access 2010 wie in Bild 9 aus.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_009.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_009.png\" alt=\"Makros &uuml;ber das Ribbon bearbeiten\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 9: Makros &uuml;ber das Ribbon bearbeiten<\/p>\n<p>Wenn Sie das erste Mal mit dem neuen Makro-Editor arbeiten, stellen Sie sich m&ouml;glicherweise die eine oder andere Frage &#8211; zum Beispiel, wie man eine Makroaktion ganz vorne im Makro einf&uuml;gt.<\/p>\n<p>Solche Fragen beantwortet das Makro-Ribbon nicht. Es stellt lediglich den einen oder anderen Befehl zur Verf&uuml;gung, der so nicht im Makro-Editor selbst zu finden ist. So bietet das Makro-Ribbon etwa die folgenden Befehle:<\/p>\n<ul>\n<li><b>Ausf&uuml;hren<\/b>: Die schnellste M&ouml;glichkeit, um das aktuelle Makro zu starten. Achtung: Sie m&uuml;ssen ein Makro speichern, bevor Sie es ausf&uuml;hren k&ouml;nnen.<\/li>\n<li><b>Einzelschritt<\/b>: Mit dieser Schaltfl&auml;che aktivieren oder deaktivieren Sie den Einzelschrittmodus beim Ausf&uuml;hren von Makros. Ist die Option aktiviert, zeigt Access vor der Ausf&uuml;hrung eines jeden Befehls den Dialog <b>Einzelschritt <\/b>an, der Informationen &uuml;ber den n&auml;chsten auszuf&uuml;hrenden Befehl ausgibt (siehe Bild 10).<\/li>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_010.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_010.png\" alt=\"Der Einzelschritt-Modus des Makro-Editors\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 10: Der Einzelschritt-Modus des Makro-Editors<\/p>\n<li><b>Zu Visual Basic konvertieren<\/b>: Dieser Befehl startet die Konvertierung von Makros zu Visual Basic-Prozeduren (mehr dazu weiter unten).<\/li>\n<li><b>Aktionen erweitern<\/b>: Erweitert alle markierten Aktionen (sind keine markiert, werden alle Aktionen erweitert).<\/li>\n<li><b>Aktionen reduzieren<\/b>: Zeigt f&uuml;r alle markierten Aktionen nur noch die erste Zeile und das Plus-Zeichen zum Erweitern an. Sind keine Aktionen markiert, werden alle Aktionen reduziert dargestellt.<\/li>\n<li><b>Alles einblenden<\/b>: Erweitert alle Aktionen.<\/li>\n<li><b>Alle Ebenen reduzieren<\/b>: Stellt alle Ebenen nur noch in Form der ersten Zeile dar.<\/li>\n<li><b>Aktionskatalog<\/b>: Blendet den Aktionskatalog ein und aus.<\/li>\n<li><b>Alle Aktionen anzeigen<\/b>: Zeigt, wenn gedr&uuml;ckt, alle Aktionen im Aktionskatalog an. Ist <b>Alle Aktionen anzeigen <\/b>nicht aktiviert, zeigt der Aktionskatalog nur die Aktionen an, die im aktuellen Kontext zul&auml;ssig sind.<\/li>\n<\/ul>\n<h2>Makros konvertieren<\/h2>\n<p>Wenn Sie beispielsweise eine Datenbank bearbeiten sollen, indem Sie die vorhandenen Makros nach VBA konvertieren, k&ouml;nnen Sie dies zumindest teilweise automatisch erledigen lassen. Den dazu notwendigen Befehl <b>Zu Visual Basic konvertieren <\/b>haben Sie bereits weiter oben kennengelernt.<\/p>\n<p>Wenn Sie diesen anklicken, liefert Access zun&auml;chst den Dialog aus Bild 11. Hier legen Sie fest, ob Sie eine Fehlerbehandlung zu der konvertierten VBA-Prozedur hinzuf&uuml;gen m&ouml;chten oder ob die im Makro enthaltenen Kommentare im Code untergebracht werden sollen. Access legt f&uuml;r jedes konvertierte Makro ein neues VBA-Modul an, dessen Name aus Konvertiertes Makro- und dem Namen des Makros besteht, also beispielsweise <b>Konvertiertes Makro- macMeldungsfeld<\/b>.<\/p>\n<p class=\"image\"><a rel=\"lightbox\" href=\"..\/tl_files\/images\/pic_233_011.png\"><img decoding=\"async\" src=\"..\/tl_files\/images\/pic_233_011.png\" alt=\"Optionen f&uuml;r die Konvertierung von Makros zu VBA-Prozeduren\" width=\"325\" \/><\/a><\/p>\n<p class='imagetext'>Bild 11: Optionen f&uuml;r die Konvertierung von Makros zu VBA-Prozeduren<\/p>\n<div class=\"rcp_restricted\"><p><span style=\"color: #ff0000;\">M&ouml;chten Sie weiterlesen? Dann l&ouml;sen Sie Ihr Ticket!<\/span><br \/>\n<span style=\"color: #ff0000;\">Hier geht es zur Bestellung des Jahresabonnements des Magazins <strong>Access &#091;basics&#093;<\/strong>:<\/span><br \/>\n<span style=\"color: #ff0000;\"><a style=\"color: #ff0000;\" href=\"https:\/\/shop.minhorst.com\/magazine\/282\/access-basics?c=77\">Zur Bestellung ...<\/a><\/span><br \/>\n<span style=\"color: #ff0000;\">Danach greifen Sie sofort auf <strong>alle rund 400 Artikel<\/strong> unseres Angebots zu - auch auf diesen hier!<\/span><br \/>\n<span style=\"color: #000000;\">Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein:<\/span><\/p>\n<\/div>\n\n\t\n\t<form id=\"rcp_login_form\"  class=\"rcp_form\" method=\"POST\" action=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000233\/\">\n\n\t\t\n\t\t<fieldset class=\"rcp_login_data\">\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_login\">Username or Email<\/label>\n\t\t\t\t<input name=\"rcp_user_login\" id=\"rcp_user_login\" class=\"required\" type=\"text\"\/>\n\t\t\t<\/p>\n\t\t\t<p>\n\t\t\t\t<label for=\"rcp_user_pass\">Password<\/label>\n\t\t\t\t<input name=\"rcp_user_pass\" id=\"rcp_user_pass\" class=\"required\" type=\"password\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t\t<p>\n\t\t\t\t<input type=\"checkbox\" name=\"rcp_user_remember\" id=\"rcp_user_remember\" value=\"1\"\/>\n\t\t\t\t<label for=\"rcp_user_remember\">Remember me<\/label>\n\t\t\t<\/p>\n\t\t\t<p class=\"rcp_lost_password\"><a href=\"\/index.php\/data\/wp\/v2\/posts\/55000233?rcp_action=lostpassword\"><\/a><\/p>\n\t\t\t<p>\n\t\t\t\t<input type=\"hidden\" name=\"rcp_action\" value=\"login\"\/>\n\t\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_redirect\" value=\"https:\/\/access-basics.de\/data\/wp\/v2\/posts\/55000233\/\"\/>\n\t\t\t\t\t\t\t\t<input type=\"hidden\" name=\"rcp_login_nonce\" value=\"cbd3f36316\"\/>\n\t\t\t\t<input id=\"rcp_login_submit\" class=\"rcp-button\" type=\"submit\" value=\"Login\"\/>\n\t\t\t<\/p>\n\t\t\t\t\t<\/fieldset>\n\n\t\t\n\t<\/form>\n<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Makros sind eine M&ouml;glichkeit, einfache Vorg&auml;nge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung &#8211; zum Beispiel in Form zweier Spezialmakros namens <b>AutoExec <\/b>und <b>AutoKeys<\/b>, die beim Start beziehungsweise beim Ausf&uuml;hren von Tastenkombination aufgerufen werden k&ouml;nnen. Da Microsoft mit Access 2010 die Webdatenbanken eingef&uuml;hrt hat, die ausschlie&szlig;lich mit Makros programmiert werden k&ouml;nnen, wollen wir an dieser Stelle eine Einf&uuml;hrung in die Programmierung mit Makros bieten.<\/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":[66022014,662014,44000016,44000017],"tags":[],"class_list":["post-55000233","post","type-post","status-publish","format-standard","hentry","category-66022014","category-662014","category-Makros","category-Tipps_und_Tricks"],"aioseo_notices":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v15.9.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Programmieren mit Makros, Teil I - Access [basics]<\/title>\n<meta name=\"description\" content=\"Makros sind eine M\u00f6glichkeit, einfache Vorg\u00e4nge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung \u2013 zum Beispiel in Form zweier Spezialmakros namens AutoExec und AutoKeys, die beim Start beziehungsweise beim Ausf\u00fchren von Tastenkombination aufgerufen werden k\u00f6nnen. Da Microsoft mit Access 2010 die Webdatenbanken eingef\u00fchrt hat, die ausschlie\u00dflich mit Makros programmiert werden k\u00f6nnen, wollen wir an dieser Stelle eine Einf\u00fchrung in die Programmierung mit Makros bieten.\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programmieren mit Makros, Teil I - Access [basics]\" \/>\n<meta property=\"og:description\" content=\"Makros sind eine M\u00f6glichkeit, einfache Vorg\u00e4nge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung \u2013 zum Beispiel in Form zweier Spezialmakros namens AutoExec und AutoKeys, die beim Start beziehungsweise beim Ausf\u00fchren von Tastenkombination aufgerufen werden k\u00f6nnen. Da Microsoft mit Access 2010 die Webdatenbanken eingef\u00fchrt hat, die ausschlie\u00dflich mit Makros programmiert werden k\u00f6nnen, wollen wir an dieser Stelle eine Einf\u00fchrung in die Programmierung mit Makros bieten.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html\" \/>\n<meta property=\"og:site_name\" content=\"Access [basics]\" \/>\n<meta property=\"article:published_time\" content=\"2020-01-24T15:59:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"-0001-11-30T00:00:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/..\/tl_files\/images\/pic_233_001.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\">\n\t<meta name=\"twitter:data1\" content=\"33\u00a0Minuten\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"https:\/\/access-basics.de\/#website\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Access [basics]\",\"description\":\"DAS ACCESS-MAGAZIN F\\u00dcR ALLE, DIE VON 0 AUF 100 WOLLEN\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"https:\/\/access-basics.de\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"de\"},{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html#primaryimage\",\"inLanguage\":\"de\",\"url\":\"..\/tl_files\/images\/pic_233_001.png\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html#webpage\",\"url\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html\",\"name\":\"Programmieren mit Makros, Teil I - Access [basics]\",\"isPartOf\":{\"@id\":\"https:\/\/access-basics.de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html#primaryimage\"},\"datePublished\":\"2020-01-24T15:59:06+00:00\",\"dateModified\":\"-0001-11-30T00:00:00+00:00\",\"author\":{\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\"},\"description\":\"Makros sind eine M\\u00f6glichkeit, einfache Vorg\\u00e4nge unter Access zu automatisieren. Sie sind zwar erheblich unflexibler als etwa VBA-Code, haben aber dennoch ihre Berechtigung \\u2013 zum Beispiel in Form zweier Spezialmakros namens AutoExec und AutoKeys, die beim Start beziehungsweise beim Ausf\\u00fchren von Tastenkombination aufgerufen werden k\\u00f6nnen. Da Microsoft mit Access 2010 die Webdatenbanken eingef\\u00fchrt hat, die ausschlie\\u00dflich mit Makros programmiert werden k\\u00f6nnen, wollen wir an dieser Stelle eine Einf\\u00fchrung in die Programmierung mit Makros bieten.\",\"breadcrumb\":{\"@id\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/\",\"url\":\"https:\/\/access-basics.de\/\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@type\":\"WebPage\",\"@id\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html\",\"url\":\"https:\/\/access-basics.de\/index.php\/Programmieren_mit_Makros_Teil_I.html\",\"name\":\"Programmieren mit Makros, Teil I\"}}]},{\"@type\":\"Person\",\"@id\":\"https:\/\/access-basics.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\/\/access-basics.de\/#personlogo\",\"inLanguage\":\"de\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","_links":{"self":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000233","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/comments?post=55000233"}],"version-history":[{"count":0,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/posts\/55000233\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/media?parent=55000233"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/categories?post=55000233"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-basics.de\/index.php\/data\/wp\/v2\/tags?post=55000233"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}