{"id":55000450,"date":"2007-04-01T00:00:00","date_gmt":"2020-05-15T16:26:44","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=450"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Programmierhelfer","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/","title":{"rendered":"Programmierhelfer"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Die VBA-Entwicklungsumgebung ist keine Offenbarung, was den Funktionsumfang angeht. Dabei gibt es so viele M&ouml;glichkeiten, dem Entwickler Aufgaben abzunehmen. Im vorliegenden Beitrag zeigt Access im Unternehmen, wie Sie mit einer Tool-Sammlung namens MZ-Tools besseren Code produzieren k&ouml;nnen.<\/b><\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Download und Installation<\/p>\n<p>Die MZ-Tools finden Sie auf der unter [1] angegebenen Internetseite. Die Tools gibt es in verschiedenen Ausf&uuml;hrungen f&uuml;r unterschiedliche Entwicklungsumgebungen, unter anderem auch f&uuml;r Visual Studio .NET. F&uuml;r die Installation bringt MZ-Tools eine Setup-Anwendung mit. Wenn der VBA-Editor beim Installieren ge&ouml;ffnet ist, m&uuml;ssen Sie Access zun&auml;chst schlie&szlig;en und wieder &ouml;ffnen, um mit dem Tool zu arbeiten. Dann erst erscheint die Benutzeroberfl&auml;che des Tools in Form einer eigenen Symbolleiste. Alternativ zur Symbolleiste k&ouml;nnen Sie alle Anweisungen auch &uuml;ber den Men&uuml;eintrag <b>Extras\/MZ-Tools <\/b>oder &uuml;ber das Kontextmen&uuml; diverser Elemente aufrufen. Im Folgenden werden bei der Beschreibung der Funktionen die dort beziehungsweise in den ToolTip-Texten genannten Bezeichnungen verwendet.<\/p>\n<h2>Aktion sauberer Code<\/h2>\n<p>Der erste Schwung n&uuml;tzlicher Funktionen dient dazu, den Code sauber zu halten. Sauber zu halten Nun, gro&szlig;e Projekte neigen dazu, mit der Zeit eine Reihe nicht mehr benutzter Routinen oder Variablen anzusammeln. Und hier liegt eine der St&auml;rken von MZ-Tools, denn es bringt direkt zwei Funktionen f&uuml;r das S&auml;ubern des Codes von nicht mehr ben&ouml;tigten Fragmenten mit.<\/p>\n<p>Die erste Funktion hei&szlig;t Prozeduraufrufe. Sie k&ouml;nnen mit dieser Funktion feststellen, ob eine bestimmte Routine irgendwo im Code aufgerufen wird. Dazu platzieren Sie einfach die Einf&uuml;gemarke auf die zu untersuchende Routine und w&auml;hlen die Funktion <b>Prozeduraufrufe <\/b>aus.<\/p>\n<p>MZ-Tools blendet dann einen Dialog ein, der den genauen Pfad aller Aufrufe anzeigt (siehe Bild 1). Im Beispiel erfolgt der Aufruf als Methode der Klasse, in der sich die Routine befindet, und die wiederum wird aus einem Formular heraus aufgerufen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic001_opt.jpeg\" alt=\"pic001.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Untersuchung einer Funktion auf ihre Aufrufe von anderen Stellen<\/span><\/b><\/p>\n<p>Wenn Sie diese Untersuchung mit einer Funktion durchf&uuml;hren, die von keiner anderen Stelle aus aufgerufen wird, bleibt der Dialog leer und Sie k&ouml;nnen die Routine &#8211; sofern Ihnen kein weiterer Verwendungszweck einf&auml;llt &#8211; l&ouml;schen.<\/p>\n<p>Eines m&uuml;ssen Sie allerdings beim Einsatz dieser Funktion ber&uuml;cksichtigen: Sie pr&uuml;ft nicht, ob eine Routine direkt von einem der Access-Objekte aufgerufen wird, also beispielsweise als Funktion innerhalb einer Abfrage oder als Wert einer Ereigniseigenschaft. Kommentieren Sie scheinbar &uuml;berfl&uuml;ssige Routinen also am besten zun&auml;chst aus und l&ouml;schen Sie diese, wenn nach einer gewissen Zeit kein Fehler erscheint &#8230;<\/p>\n<p>Die zweite in diesem Zusammenhang interessante Funktion untersucht die Variablen des gesamten Projekts dahingehend, ob diese &uuml;berhaupt verwendet werden. Die Funktion erreichen Sie &uuml;ber den Men&uuml;eintrag <b>Andere Hilfsmittel\/&Uuml;bersicht: Programmcode<\/b>. Bild 2 zeigt, was diese Funktion leistet: Sie zeigt alle deklarierten, aber nicht verwendeten Elemente aller Module an. Auch hier gibt es eine Einschr&auml;nkung: Die Funktion ber&uuml;cksichtigt &#8211; laut Onlinehilfe &#8211; nur die als <b>Private <\/b>deklarierten Elemente. Trotzdem ist diese Funktion eine gute Hilfe, um Variablenleichen aufzufinden und zu l&ouml;schen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic002_opt.jpeg\" alt=\"pic002.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Die Programmcode-&Uuml;bersicht bringt unter anderem deklarierte und nicht verwendete Variablen ans Tageslicht.<\/span><\/b><\/p>\n<h2>Prozeduren sortieren<\/h2>\n<p>In Zusammenhang mit &#8222;sauberem Code&#8220; ist auch die Funktion zum Sortieren der Prozeduren interessant. Diese zeigt alle enthaltenen Elemente in einem Dialog mit einer Listbox an, deren Eintr&auml;ge Sie durch Drag and Drop verschieben k&ouml;nnen. Die &auml;nderungen werden nach dem Schlie&szlig;en des Dialogs im Modul nachgezogen.<\/p>\n<h2>Suche mit &Uuml;bersicht<\/h2>\n<p>Sehr hilfreich ist die Suchfunktion, die sich auf den ersten Blick gar nicht so sehr von der Standardsuche unterscheidet. Interessant wird es erst bei der Anzeige der Suchergebnisse: Hier zeigt MZ-Tools eine Liste mit den Modulen, Routinen und den relevanten Codezeilen an, von der aus Sie die passenden Routinen per Doppelklick im Codefenster anzeigen lassen k&ouml;nnen (siehe Bild 3).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic003_opt.jpeg\" alt=\"pic003.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Die Suchfunktion liefert die Ergebnisse nicht nacheinander, sondern in einer Ergebnisliste.<\/span><\/b><\/p>\n<p>Die Suchfunktion bietet gleichzeitig die M&ouml;glichkeit, den Suchbegriff in einem oder in allen Modulen durch einen alternativen Ausdruck zu ersetzen. Dazu geben Sie einfach den gew&uuml;nschten Begriff in den Dialog ein und klicken auf <b>Ersetzen <\/b>oder <b>Alle ersetzen<\/b>.<\/p>\n<h2>Prozedur-Assistent<\/h2>\n<p>Wer noch unsicher beim Erstellen von Prozeduren unterschiedlicher Art ist, kann den Prozedur-Assistenten dazu einsetzen (siehe Bild 4). Interessant sind die Funktionen, die das automatische Hinzuf&uuml;gen eines Prozedurkopfes mit Informationen zu der Prozedur und einer Fehlerbehandlung erlauben. Diese beiden Funktionen gibt es auch einzeln, sodass diese weiter unten beschrieben werden.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic004_opt.jpeg\" alt=\"pic004.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: Hinzuf&uuml;gen von Prozeduren per Assistent<\/span><\/b><\/p>\n<p>Interessant ist, dass Sie die Prozedurvorlagen anpassen k&ouml;nnen: &Ouml;ffnen Sie einmal den <b>Optionen<\/b>-Dialog und wechseln Sie auf die Registerseite <b>Namensgebung<\/b>. Hier k&ouml;nnen Sie sowohl die Suffixe f&uuml;r Ergebnisvariablen und Membervariablen als auch f&uuml;r die Typenpr&auml;fixe festlegen.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Code-Vorlagen<\/p>\n<p><!--30percent--><\/p>\n<p>Wer viel programmiert, hat vermutlich einen ganzen Rutsch von Standardfunktionen oder Codeschnipseln, die er regelm&auml;&szlig;ig verwendet. Diese k&ouml;nnen Sie mit MZ-Tools einfach verwalten und in das aktuelle Modul einf&uuml;gen.<\/p>\n<p>Legen Sie also zun&auml;chst ein Code-Template an &#8211; hier eine oft verwendete Funktion zum Umwandeln von Datumsangaben in SQL-taugliche Datumsausdr&uuml;cke. Die Funktion sieht so aus:<\/p>\n<pre>Public Function SQLDatum(varDate As Variant)\r\n    SQLDatum = Format(varDate, _\r\n    &quot;\\#yyyy\\-mm\\-dd\\#&quot;)\r\nEnd Function<\/pre>\n<p>Zun&auml;chst speichern Sie diesen Codeschnipsel. Dazu &ouml;ffnen Sie den <b>Optionen<\/b>-Dialog von MZ-Tools und wechseln dort zur Registerseite <b>Code-Vorlagen<\/b>. Klicken Sie auf <b>Hinzuf&uuml;gen <\/b>und f&uuml;llen Sie die Felder im nun erscheinenden Dialog beispielsweise wie in Bild 5 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic005_opt.jpeg\" alt=\"pic005.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Hinzuf&uuml;gen einer Codevorlage<\/span><\/b><\/p>\n<p>Sie k&ouml;nnen dort auch eine Tastenkombination festlegen (hier <b>Umschalt + Strg + D<\/b>) und brauchen dann im betroffenen Modul einfach nur noch die Einf&uuml;gemarke an die gew&uuml;nschte Stelle zu setzen und die Tastenkombination auszuf&uuml;hren.<\/p>\n<p>Wie Sie der Abbildung entnehmen k&ouml;nnen, enth&auml;lt der Dialog auch die M&ouml;glichkeit, vordefinierte und benutzerdefinierte Variablen in den Codeschnipsel einzuf&uuml;gen. Die vordefinierten Variablen f&uuml;llt MZ-Tools automatisch aus, die benutzerdefinierten fragt es beim Hinzuf&uuml;gen des Codeschnipsels ab. Wenn Sie also etwa eine <b>For&#8230;Next<\/b>-Schleife einf&uuml;gen m&ouml;chten, geben Sie nacheinander die drei benutzerdefinierten Variablen <b>Laufvariable<\/b>, <b>Startwert <\/b>und <b>Endwert <\/b>in das passende Feld ein und f&uuml;gen diese jeweils in den Codeschnipsel ein, sodass dieser schlie&szlig;lich wie folgt aussieht:<\/p>\n<pre>For {Laufvariable} = {Startwert} to {Endwert}\r\n    {I}\r\nNext {Laufvariable}<\/pre>\n<p>Wenn Sie diesen dann beispielsweise mit der Tastenkombination <b>Umschalt + Strg + F <\/b>hinzuf&uuml;gen, zeigt MZ-Tools einen passenden Dialog zur Abfrage der benutzerdefinierten Variablen an und f&uuml;gt die eingegebenen Werte direkt in den Ausdruck ein. So erzeugen Sie mit einer einfachen Tastenkombination und der Eingabe dreier Werte auf die Schnelle den Rumpf einer <b>For&#8230;Next<\/b>-Schleife. Der Ausdruck <b>{I}<\/b> ist &uuml;brigens eine vordefinierte Variable, die daf&uuml;r sorgt, dass die Einf&uuml;gemarke sich nach dem Hinzuf&uuml;gen des Codeschnipsels direkt innerhalb der <b>For&#8230;Next<\/b>-Schleife befindet.<\/p>\n<p>Kleiner Tipp: F&uuml;gen Sie immer noch eine Leerzeile an den Codeschnipsel an, damit Sie diesen ohne Probleme auch einmal zwischen zwei direkt &uuml;bereinanderliegende Zeilen einf&uuml;gen k&ouml;nnen.<\/p>\n<h2>Private Zwischenablage<\/h2>\n<p>Gelegentlich kopieren Sie einen Ausdruck, um ihn an anderer Stelle wieder einzuf&uuml;gen. Dummerweise kommt manchmal ein anderer Kopiervorgang dazwischen und die Zwischenablage enth&auml;lt nicht mehr das gew&uuml;nschte Element. MZ-Tools sieht daf&uuml;r eine private Zwischenablage vor, in der Sie bis zu neun Elemente speichern k&ouml;nnen.<\/p>\n<p>Wenn Sie die private Zwischenablage einsetzen m&ouml;chten, sollten Sie in den Optionen von MZ-Tools auf der Registerseite <b>Tastaturk&uuml;rzel <\/b>passende Tastenkombinationen f&uuml;r das Belegen und Auslesen der einzelnen Speicherpl&auml;tze festlegen (etwa <b>Strg + 1<\/b>, <b>Strg + 2 <\/b>&#8230; f&uuml;r das Einf&uuml;gen und <b>Alt + 1<\/b>, <b>Alt + 2 <\/b>&#8230; f&uuml;r das Auslesen der Ablagepl&auml;tze). Generell k&ouml;nnen Sie Tastenkombinationen f&uuml;r alle Befehle von MZ-Tools festlegen.<\/p>\n<h2>Modul- und Prozedurkopf<\/h2>\n<p>Ebenfalls per Mausklick k&ouml;nnen Sie einem Modul oder einer Prozedur spezielle Informationen hinzuf&uuml;gen. Bild 6 zeigt, wie die Vorlage f&uuml;r einen Modulkopf aussieht, den Sie wie die Codeschnipsel unter Verwendung vordefinierter Variablen wie dem Modulnamen oder Datum und Zeit anpassen k&ouml;nnen.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic006_opt.jpeg\" alt=\"pic006.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 6: Anpassen des Modulheaders<\/span><\/b><\/p>\n<p>Einen Modulkopf f&uuml;gen Sie dem aktuellen Modul an der obersten Position hinzu, indem Sie den Befehl <b>Modulkopf hinzuf&uuml;gen <\/b>ausw&auml;hlen; beim Einf&uuml;gen eines Prozedurkopfes m&uuml;ssen Sie die Einf&uuml;gemarke zuvor in das betroffene Modul setzen. MZ-Tools f&uuml;gt den Prozedurkopf dann oberhalb der Prozedur ein, sofern Sie nicht in den Optionen festgelegt haben, dass der Prozedurkopf innerhalb der Routine platziert werden soll.<\/p>\n<h2>Fehlerbehandlung<\/h2>\n<p>Nach dem gleichen Muster verfahren Sie mit der Fehlerbehandlung: Setzen Sie die Einf&uuml;gemarke in die Zielroutine und f&uuml;hren Sie den Befehl <b>Fehlerbehandlung hinzuf&uuml;gen <\/b>aus. Diese sollten Sie allerdings noch ein wenig anpassen, um auch im Falle eines Fehlers noch Code zum Aufr&auml;umen eventuell durch die Routine erzeugter Objekte einf&uuml;gen zu k&ouml;nnen. Die Access-im-Unternehmen-Variante sieht demnach wie in Bild 7 aus.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic007_opt.jpeg\" alt=\"pic007.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 7: Anpassen der Vorlage f&uuml;r die Fehlerbehandlung<\/span><\/b><\/p>\n<h2>Zeilen nummerieren<\/h2>\n<p>Diese Fehlerbehandlung gibt beim Auftreten eines Fehlers unter anderem den Wert der Funktion <b>Erl<\/b> aus, die die Nummer der fehlerhaften Zeile zur&uuml;ckgibt. Dazu muss aber zun&auml;chst einmal eine Zeilennummerierung vorliegen. Auch daf&uuml;r liefert MZ-Tools die passende Funktion: Der Kontextmen&uuml;eintrag <b>MZ-Tools\/Zeilennummern hinzuf&uuml;gen <\/b>f&uuml;gt zu dem Objekt, von dem aus Sie das Kontextmen&uuml; aufgerufen haben, Zeilennummern hinzu. Das hei&szlig;t, dass Sie einer einzigen Routine Zeilennummern hinzuf&uuml;gen, indem Sie den passenden Kontextmen&uuml;eintrag innerhalb der Prozedur aufrufen. Wenn Sie ein ganzes Modul oder gar das ganze Projekt nummerieren m&ouml;chten, verwenden Sie den passenden Kontextmen&uuml;eintrag der Objekte im Projekt-Explorer. Der Men&uuml;eintrag <b>Zeilennummern entfernen <\/b>macht diesen Vorgang wieder r&uuml;ckg&auml;ngig. <\/p>\n<p>In den Optionen k&ouml;nnen Sie die Inkrementierung festlegen und au&szlig;erdem ausw&auml;hlen, ob jede Zeile eine eindeutige Nummer erhalten soll oder die Nummerierung in jeder Routine neu beginnen darf.<\/p>\n<h2>Zeilen zurechtstutzen<\/h2>\n<p>Wenn Sie den Code in eine Dokumentation einf&uuml;gen oder diesen einfach besser lesbar machen m&ouml;chten, k&ouml;nnen Sie die einzelnen Zeilen nach einer bestimmten Anzahl Zeichen automatisch umbrechen lassen. Die Anzahl der Zeichen legen Sie in den MZ-Tools-Optionen mit der Option <b>Zeichenanzahl beim Trennen von Zeichen <\/b>auf der Registerseite <b>Allgemein <\/b>fest. Anschlie&szlig;end markieren Sie wieder den anzupassenden Bereich (eine Zeile, ein Modul oder das ganze Projekt) und w&auml;hlen den Befehl <b>Zeilen trennen <\/b>oder <b>Zeilen zusammenf&uuml;gen <\/b>aus.<\/p>\n<h2>Eigenschaft in Property umwandeln<\/h2>\n<p>F&uuml;r diejenigen, die objektorientiert programmieren, ist diese Funktion hilfreich: <b>Mit &Ouml;ffentliche Variable in Eigenschaft konvertieren&#8230; <\/b>wandeln Sie eine &ouml;ffentliche Variable in eine Membervariable plus je eine <b>Property Get<\/b>&#8211; und eine <b>Property Let<\/b>\/<b>Set<\/b>-Prozedur um. Aus<\/p>\n<pre>Public Gehalt As Currency<\/pre>\n<p>wird dann Folgendes:<\/p>\n<pre>Private mcurGehalt As Currency\r\nPublic Property Get Gehalt() As Currency\r\nGehalt = mcurGehalt\r\nEnd Property\r\nPublic Property Let Gehalt(ByVal curGehalt _\r\nAs Currency)\r\nmcurGehalt = curGehalt\r\nEnd Property<\/pre>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Prozedur-Favoriten<\/p>\n<p>Wenn Sie oft mit bestimmten Prozeduren arbeiten, k&ouml;nnen Sie Shortcuts festlegen, um diese schnell im Codefenster sichtbar zu machen. Auch hier sollten Sie passende Tastenkombinationen anlegen. Auf diese Weise k&ouml;nnen Sie schnell auf den Dialog mit den gespeicherten Prozeduren zugreifen (siehe Bild 8).<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic008_opt.jpeg\" alt=\"pic008.tif\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Per Mausklick zu bestimmten Prozeduren springen<\/span><\/b><\/p>\n<h2>Select Case- und MsgBox-Assistent<\/h2>\n<p>Diese beiden Assistenten helfen beim schnellen Zusammenstellen von <b>Select Case<\/b>-Konstrukten und von <b>MsgBox<\/b>-Anweisungen. Ihre Funktion soll an dieser Stelle nicht weiter erl&auml;utert werden. <\/p>\n<h2>Direktfenster leeren<\/h2>\n<p>Mit der Funktion <b>Direktfenster l&ouml;schen <\/b>leeren Sie das Direktfenster. Normalerweise f&uuml;hren Sie dazu mindestens die Tastenkombinationen <b>Strg + A <\/b>und <b>Entf <\/b>durch &#8211; und selbst daf&uuml;r muss die Einf&uuml;gemarke sich schon im Direktfenster befinden.<\/p>\n<h2>Alle Fenster schlie&szlig;en<\/h2>\n<p>Diese Funktion schlie&szlig;t alle ge&ouml;ffneten Codefenster. Sie m&uuml;ssen also nicht mehr endlos klicken, bevor der Arbeitsbereich sauber ist &#8230;<\/p>\n<h2>Auswahl in Gro&szlig;-\/Kleinbuchstaben umwandeln<\/h2>\n<p>Wenn Sie beispielsweise eine Variable in eine Konstante umwandeln, m&ouml;chten Sie diese m&ouml;glicherweise komplett in gro&szlig;en Buchstaben schreiben. Mit der Funktion <b>In Gro&szlig;buchstaben umwandeln <\/b>erledigen Sie das f&uuml;r den markierten Bereich im Handumdrehen. Umgekehrt funktioniert das mit der Funktion <b>In Kleinbuchstaben umwandeln<\/b>.<\/p>\n<h2>Statistik ausgeben<\/h2>\n<p>Wer sich daf&uuml;r interessiert, kann sich eine Statistik der in den Modulen dieses VBA-Projekts enthaltenen Codezeilen, Kommentarzeilen und Prozeduren ausgeben lassen.<\/p>\n<h2>XML-Dokumentation<\/h2>\n<p>Eine komplette Dokumentation des Projekts erstellen Sie mit dem Befehl <b>XML Dokumentation erstellen&#8230;<\/b> Die Dokumentation wird in einer separaten XML-Datei gespeichert und enth&auml;lt eine Auflistung der Verweise sowie der einzelnen Module inklusive Informationen &uuml;ber die Deklarationen und Routinen.<\/p>\n<h2>Einstellungen sichern und weitergeben<\/h2>\n<p>MZ-Tools speichert seine Einstellungen in der Datei <b>MZTools3vba.ini <\/b>im Anwendungsverzeichnis (unter Windows 7 etwa unter <b>C:\\Program Files (x86)\\MZTools3VBA<\/b>). Wenn Sie die Einstellungen auf einem anderen Rechner weiterverwenden m&ouml;chten, kopieren Sie diese Datei einfach dorthin.<\/p>\n<h2>Hinweis f&uuml;r Window Vista\/Windows 7<\/h2>\n<p>Unter neueren Windows-Betriebssystemen gibt es aus Sicherheitsgr&uuml;nden Probleme beim Schreiben von Daten in dem Verzeichnis, in dem sich die Ini-Datei von MZ-Tools befindet. Unter Windows 7 beispielsweise &auml;ndern Sie dies,  indem Sie sich mit ausreichenden Berechtigungen  ausgestattet anmelden und dann im Windows-Explorer  die Eigenschaften der Datei MZTools3vba.ini  wie in Bild 8 so &auml;ndern, dass auch normale Benutzer  &auml;nderungsrechte haben.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2007_02\/Programmierhilfe-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 8: Per Mausklick zu bestimmten Prozeduren springen<\/span><\/b><\/p>\n<h2>Zusammenfassung und Ausblick<\/h2>\n<p>Wer viel mit VBA programmiert, kommt an den MZ-Tools eigentlich nicht vorbei. Nat&uuml;rlich kann man auch dieses Paket noch erweitern, aber es bildet einen soliden Grundstock, der gerade durch die Anpassung der Vorlagen und die Verwendung von Tastenkombinationen eine gro&szlig;e Hilfe sein kann.<\/p>\n<p class=\"zwischen-berschriftquellen\">Quellen<\/p>\n<p class=\"quellen\">[1] Download MZTools f&uuml;r VBA: http:\/\/www.mztools.com\/v3\/mztools3.htm<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die VBA-Entwicklungsumgebung ist keine Offenbarung, was den Funktionsumfang angeht. Dabei gibt es so viele M&ouml;glichkeiten, dem Entwickler Aufgaben abzunehmen. Im vorliegenden Beitrag zeigt Access im Unternehmen, wie Sie mit einer Tool-Sammlung namens MZ-Tools besseren Code produzieren k&ouml;nnen.<\/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":[66022007,662007,44000020],"tags":[],"class_list":["post-55000450","post","type-post","status-publish","format-standard","hentry","category-66022007","category-662007","category-Tools"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Programmierhelfer - 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\/Programmierhelfer\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programmierhelfer\" \/>\n<meta property=\"og:description\" content=\"Die VBA-Entwicklungsumgebung ist keine Offenbarung, was den Funktionsumfang angeht. Dabei gibt es so viele M&ouml;glichkeiten, dem Entwickler Aufgaben abzunehmen. Im vorliegenden Beitrag zeigt Access im Unternehmen, wie Sie mit einer Tool-Sammlung namens MZ-Tools besseren Code produzieren k&ouml;nnen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-15T16:26:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63\" \/>\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=\"12\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Programmierhelfer\",\"datePublished\":\"2020-05-15T16:26:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/\"},\"wordCount\":2319,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a737dc6dba6d4357867d68ae50587c63\",\"articleSection\":[\"2\\\/2007\",\"2007\",\"Tools\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/\",\"name\":\"Programmierhelfer - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a737dc6dba6d4357867d68ae50587c63\",\"datePublished\":\"2020-05-15T16:26:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a737dc6dba6d4357867d68ae50587c63\",\"contentUrl\":\"http:\\\/\\\/vg08.met.vgwort.de\\\/na\\\/a737dc6dba6d4357867d68ae50587c63\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Programmierhelfer\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmierhelfer\"}]},{\"@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":"Programmierhelfer - 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\/Programmierhelfer\/","og_locale":"de_DE","og_type":"article","og_title":"Programmierhelfer","og_description":"Die VBA-Entwicklungsumgebung ist keine Offenbarung, was den Funktionsumfang angeht. Dabei gibt es so viele M&ouml;glichkeiten, dem Entwickler Aufgaben abzunehmen. Im vorliegenden Beitrag zeigt Access im Unternehmen, wie Sie mit einer Tool-Sammlung namens MZ-Tools besseren Code produzieren k&ouml;nnen.","og_url":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-15T16:26:44+00:00","og_image":[{"url":"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"12\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Programmierhelfer","datePublished":"2020-05-15T16:26:44+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/"},"wordCount":2319,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63","articleSection":["2\/2007","2007","Tools"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/","url":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/","name":"Programmierhelfer - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#primaryimage"},"thumbnailUrl":"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63","datePublished":"2020-05-15T16:26:44+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Programmierhelfer\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#primaryimage","url":"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63","contentUrl":"http:\/\/vg08.met.vgwort.de\/na\/a737dc6dba6d4357867d68ae50587c63"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Programmierhelfer\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Programmierhelfer"}]},{"@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\/55000450","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=55000450"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000450\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000450"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000450"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000450"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}