Anhand einer in Access 2007 geschriebenen Industrieanwendung wird gezeigt, wie Anwendungen mit Hilfe von Makros und VBA-Programmierung professioneller gestaltet werden können.

Access 2007-Leser, die sich mit der Erstellung von Anwendungen mit Assistenten und Makros auskennen, können auf einfache Weise lernen, wie sie ihre Anwendungen mit der Leistungsfähigkeit der VBA-Programmierung professioneller gestalten können.

Im Gegensatz zu Programmier-Tutorials ist der Ausgangspunkt hier die Präsentation einer vollwertigen Anwendung, die für eine echte Organisation – eine Schule, vom Autor erstellt wurde. Die Anwendung wird zur Analyse und zum “Reverse-Engineering” angeboten, um den Code zu inspizieren und zu lernen, wie der Code die Anwendung auf überlegene Weise ausführen kann, die Assistenten nicht bieten können.

Dieses neue Kodierwissen ist auf jede andere Microsoft VBA-Anwendung übertragbar, z. B. Word und Excel usw. Leser ohne zumindest rudimentäre Visual Basic-Kenntnisse sollten zunächst ein gutes Access-VBA-Programmierbuch zu Rate ziehen, bevor sie fortfahren.

MS Access-Anwendungen programmieren: Verbessern Sie die Funktionalität mit Makros und Visual Basic für Anwendungen
MS Access-Anwendungen programmieren: Verbessern Sie die Funktionalität mit Makros und Visual Basic für Anwendungen

Aufbau der Schulanwendung

Die Schulanwendung ist ein einfaches Zwischenberichtssystem für Lehrer und kann heruntergeladen werden. Beim Öffnen der Datenbankdatei gibt es in der Sicherheitsfunktion eine Schaltfläche “Optionen…”, die angeklickt werden sollte, dann sollte das Kontrollkästchen “Inhalte aktivieren” aktiviert werden (siehe Abbildung 1). Die Anwendung wurde von Grund auf auf die folgende Weise aufgebaut:

  • Die Berichtsanforderungen der Schule wurden analysiert
  • Tabellen wurden erstellt und dann mit referenzieller Integrität verknüpft
  • Tabellen wurden mit Testdaten bestückt
  • Formulare und Berichte wurden mit den verfügbaren Assistenten erstellt
  • Formulare und Berichte wurden mit Visual Basic für Applikationen kodiert und getestet
  • Tabellen wurden geleert und mit den echten Daten der Schule befüllt

Die Datenbank hat eine vorinstallierte Liste von Schülern, Fächern und Lehrern. Sie öffnet sich mit einem Haupteingabeformular (Abbildung 2) , in das die Lehrer die Leistungen der Schüler eingeben können. Eine Hilfe-Schaltfläche erklärt die Hauptfunktionen der Anwendung. Eine weitere Schaltfläche “Berichtsvorschau ~ Schüler für dieses Fach” öffnet den Zwischenbericht, der dann ausgedruckt werden kann.

Initiieren des Dateneingabeformulars

Um Daten in das Datengitter zu initiieren, muss der Benutzer auf das Dropdown-Fach klicken und eine Auswahl treffen, z. B. “Spieleprogrammierung”. Dadurch werden die Daten für dieses Fach in das Formular geladen und die Schüler können dann durch Navigieren in den Datensätzen angezeigt werden. Eine Liste von Schülern wird auch in das Schüler-Dropdown geladen und ermöglicht einen schnellen Zugriff auf Datensätze.

Inspektion von Makros und VBA-Code

Um den Code hinter jedem Formular zu finden (der auch Makros enthält, die im Code als DoCmd geschrieben sind), sollte man diese Schritte befolgen:

  • Klicken Sie mit der rechten Maustaste auf das Formular und wählen Sie Entwurfsansicht (es öffnet sich das Eigenschaftsblatt mit einer Liste von Formularereignissen)
  • Klicken Sie auf eine Event-Prozedur-Ellipse, um das Codefenster für dieses Event zu öffnen
  • Oben auf dieser Codeseite befindet sich ein Kommentarbereich, der den Code beschreibt. Es gibt auch viele erklärende Kommentare auf der gesamten Seite. Sehen Sie sich an, wie die Unterprogramme und Funktionen funktionieren. Abbildung 3 zeigt z. B. den Code hinter dem Dropdownfeld “Schüler” des Hauptdateneingabeformulars.

Anhand einer vom Autor mit VBA geschriebenen Industrieanwendung in Access 2007 wird gezeigt, wie Code die Funktionalität von Anwendungen erweitert und sie professioneller und benutzerfreundlicher macht. Codeschnipsel und die erlernten Fähigkeiten sind oft auf andere VBA-Anwendungen übertragbar, z. B. in Excel, Word usw.