Module

Aus VBA-wiki
Zur Navigation springen Zur Suche springen

Module

Module müssen im Gegensatz zu Klassen und Formen nicht instanziiert werden, die enthaltenen Prozeduren können also jederzeit direkt ausgeführt werden.

Öffentliche Prozeduren können zudem von jedem anderen Modul (inklusive Klassen, Formen und referenzierenden Projekten) aus aufgerufen werden.

Der Nachteil hierbei ist jedoch, dass die Programmierung, wenn sie ausschließlich in Modulen stattfindet, sehr unübersichtlich werden kann, weil sämtliche öffentliche Prozeduren immer und überall als mögliche Befehle aufgeführt werden.

Folgende Aufgaben sind für den Einsatz in Modulen gerade wegen ihrer permanenten Verfügbarkeit prädestiniert:

  • Schnittstellen für die Benutzeroberfläche (z. B. Callback-Prozeduren des Menübandes)
  • Definition von benutzerdefinierten Typen, welche in mehreren Modulen, Klassen und/oder Formen zur Verfügung stehen sollen
  • Vorhalten von Daten und Eistellungen über einen Programmlauf hinaus
  • Steuerprozeduren (als Einstiegspunkt in Lösungen)
  • Bereitstellung von Ereignisklassen

Kurioses Verhalten bei der Erstbenennung

Bitte beachten: Wenn Sie den Namen eines Modules festlegen und nachträglich die Groß- / Kleinschreibung ändern, kann es passieren, dass VBA zwar den angezeigten Namen des Moduls ändert, im Programmcode jedoch die ursprüngliche Schreibweise anwendet.

Beispiel
  • Sie haben ein neues Modul angelegt und 'modTestuser' genannt
  • Sie benennen das Modul in 'modTestUser' um
  • Die neue Schreibweise wird für das Modul übernommen
  • Wenn Sie in Ihrer Programmierung nun die Prozedur 'EditTestUser' aufrufen wollen und 'modTestUser.EditTestUser' eingeben, verwandelt der VBA-Editor dies in 'modTestuser.EditTestUser' um
Lösung

Um den VBA-Editor dazu zu zwingen, Ihre neue Schreibweise zu akzeptieren, müssen Sie dem Modul temporär einen geänderten Namen geben (zum Beispiel 'modTestUserX'), das Projekt debuggen (ignorieren Sie eventuelle Fehlermeldungen) und dann zum gewünschten Namen zurückändern ('modTestUser').

Klassen

Siehe Klassenobjekte

Formen

Formen sind spezielle Klassenmodule, welche zusätzlich eine Oberfläche für die Interaktion mit dem Anwender zur Verfügung stellen.

Besonderheiten

Wenn Sie Formen exportieren, wird eine 'frm'- und eine 'frx'-Datei erzeugt.


frmDialog.frm

Die 'frm'-Datei enthält die Programmierung und kann wie eine 'mod'- und eine 'cls'-Datei mit einem beliebigen Texteditor betrachtet und bearbeitet werden.


frmDialog.frx

Die 'frx'-Datei ist eine Binärdatei und enthält die Definition der Oberfläche. Diese kann nicht mit einem Texteditor gelesen und bearbeitet werden.

Die 'frx'-Datei kann nicht direkt in ein Projekt importiert werden, wird aber beim Import der 'frm'-Datei automatisch vom VBA-Editor mitgeladen.

Bitte beachten:' Die 'frx'-Datei darf nicht gelöscht werden und muss sich im gleichen Verzeichnis wie die 'frm'-Datei befinden. Wenn sich die 'frx'-Datei nicht im gleichen Verzeichnis wie die 'frm'-Datei befindet, kann diese nicht importiert werden und ist somit unbrauchbar!