Lies in den Artikel rein und unten bekommst Du ein unschlagbares Angebot!
Unter VBA strukturieren wir den Code in verschiedene Elemente. Die übergeordneten Elemente sind die Module. Hier unterscheiden wir zwischen Klassenmodulen und Standardmodulen. Darunter können wir Variable, Konstanten und ähnliche deklarieren sowie auszuführende Anweisungen unterbringen. Diese Anweisungen müssen eine Voraussetzung erfüllen: Sie müssen in einer Sub- oder Function-Prozedur oder innerhalb einer Property-Methode eingetragen werden. In diesem Artikel schauen wir uns die Grundlagen von Modulen, Klassenmodulen und Objektmodulen im Detail an.
Module unter VBA
Module sind im Prinzip Textdokumente, die Code aufnehmen können. Allerdings sind diese Textdokumente nicht in Form einzelner Dateien verfügbar, wie es beispielsweise bei anderen Entwicklungsumgebungen beziehungsweise Programmiersprachen der Fall ist, sondern sie sind alle in einer einzigen Datei gespeichert. Unter Access befinden sich die Module gemeinsam mit den übrigen Elementen wie Tabellen, Abfragen, Formularen und Berichten direkt in der .accdb-Datei. Unter Excel, Word und PowerPoint landen sie im jeweiligen Dokument. Unter Outlook, wo es keine Dateien wie bei den anderen Office-Anwendungen gibt, liegt das VBA-Projekt sogar in Form einer eigenen Datei vor.
Module lassen sich allerdings auch von den übrigen Office-Anwendungen als Textdateien exportieren und so kannst Du sie auch in anderen Office-Dokumenten beziehungsweise Access-Datenbanken wieder importieren.
Modularten
Es gibt eigentlich nur zwei Modularten:
- Klassenmodule: Dies sind Module mit einigen besonderen Eigenschaften. In der Regel müssen diese erst initialisiert und mit einer Objektvariablen referenziert werden, damit man mit den enthaltenen Elementen arbeiten kann. In manchen Fällen kann man jedoch auch direkt auf diese zugreifen, ohne dass man sie explizit initialisieren muss. Beispiele für Klassenmodule sind die Module von Formularen und Berichten unter Access, die Module für die Arbeitsmappe und die einzelnen Tabellen unter Excel, das Modul ThisDocument zu einem Word-Dokument oder auch das Modul ThisOutlookSession unter Outlook.
- Standardmodule: Standardmodule kann man den VBA-Projekten aller Office-Anwendungen hinzufügen. Sie müssen im Gegensatz zu Klassenmodulen nicht initialisiert werden, daher stehen die darin enthaltenen Variablen, Sub– und Function-Prozeduren und andere Elemente jederzeit zur Verfügung. Standardmodule kann man sehr gut nutzen, um Elemente mit gemeinsamen Eigenschaften zu speichern. So verwende ich beispielsweise immer ein Modul namens mdlTools, in dem ich allerlei Prozeduren und Funktionen angelegt habe, die ich an verschiedenen Stellen benötige.
Die Klassenmodule können wir allerdings noch einmal aufteilen in alleinstehende Klassenmodule und Klassenmodule von Office-Objekten wie Access-Formularen, Word-Dokumenten, Excel-Tabellenblättern et cetera, die beim Anlegen dieser Elemente oder spätestens beim Hinzufügen von Ereignisprozeduren zu diesen Elementen erstellt werden.
Alleinstehende Klassenmodule sind solche Klassenmodule, die wir selbst erstellen können und die nicht mit anderen Elementen wie Formularen, Word-Dokumenten et cetera verknüpft sind. In diesem kapseln wir zusammenhängende Variablen, Methoden, Funktionen und Ereignisse.
Auf Basis dieser benutzerdefinierten Klassenmodule lassen sich Objekte erstellen, die für die sogenannte objektorientierte Programmierung notwendig sind. Auch wenn die Möglichkeiten der objektorientierten Programmierung unter VBA nicht so umfangreich sind wie etwa unter C# oder VB.NET, wollen wir diesem Thema einen eigenen Artikel widmen.