Module: Unterschied zwischen den Versionen
Pwania (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „== Module == Module müssen im Gegensatz zu Klassen und Formen nicht instanziiert werden, die enthaltenen Prozeduren können also jederzeit direkt ausgeführt…“) |
Pwania (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
(4 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
[[Category:vba-wiki]] | |||
== Generelles zu Modulen == | |||
Im erweiterten Sinne umfassen Module in VBA Formen, Module und Klassen. Deshalb differnzieren wir zwischen | |||
* Projektmodulen, welche Formen und Klassen sein können und | |||
* Modulen, welche eine besondere Art von Projektmodulen sind. | |||
Module können in Textdateien exportiert werden, wodurch zum Beispiel ein Austausch zwischen verschiedenen Projekten stattfinden kann bzw. verschiedene Entwicklungsstände mit entsprechenden Werkzeugen verglichen werden können. | |||
=== Projektmodule hinzufügen === | |||
=== Projektmodule exportieren und importieren === | |||
=== Projektmodule löschen === | |||
=== Projektmodule duplizieren === | |||
Exportieren, Originalmodul den gewünschten Namen geben, exportiertes Modul importieren | |||
== Module == | == 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: | 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) | * 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 | * Definition von benutzerdefinierten Typen, welche in mehreren Modulen, Klassen und/oder Formen zur Verfügung stehen sollen | ||
Zeile 7: | Zeile 33: | ||
* Steuerprozeduren (als Einstiegspunkt in Lösungen) | * Steuerprozeduren (als Einstiegspunkt in Lösungen) | ||
* Bereitstellung von Ereignisklassen | * 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 == | == Klassen == | ||
Zeile 18: | Zeile 56: | ||
=== Besonderheiten === | === 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! | 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! |
Aktuelle Version vom 19. September 2023, 13:40 Uhr
Generelles zu Modulen
Im erweiterten Sinne umfassen Module in VBA Formen, Module und Klassen. Deshalb differnzieren wir zwischen
- Projektmodulen, welche Formen und Klassen sein können und
- Modulen, welche eine besondere Art von Projektmodulen sind.
Module können in Textdateien exportiert werden, wodurch zum Beispiel ein Austausch zwischen verschiedenen Projekten stattfinden kann bzw. verschiedene Entwicklungsstände mit entsprechenden Werkzeugen verglichen werden können.
Projektmodule hinzufügen
Projektmodule exportieren und importieren
Projektmodule löschen
Projektmodule duplizieren
Exportieren, Originalmodul den gewünschten Namen geben, exportiertes Modul importieren
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!