Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In Access gibt es zwei Arten von Modulen: Standardmodule und Klassenmodule. In Access 95 waren Klassenmodule nur in Verbindung mit einem Formular oder Bericht vorhanden. In Access 97 waren sie dagegen auch auf der Registerkarte Module des Datenbankfensters vorhanden.
Erstellen von benutzerdefinierten Objekten mit Klassenmodulen
Verwenden Sie ein Klassenmodul, um eine Definition für ein benutzerdefiniertes Objekt zu erstellen. Der Name, unter dem Sie das Klassenmodul speichern, wird zugleich der Name des benutzerdefinierten Objekts. Öffentliche Sub- und Function-Prozeduren, die Sie in einem Klassenmodul definieren, werden zu benutzerdefinierten Methoden des Objekts. Öffentliche Property Let-, Property Get- und Property Set-Prozeduren werden zu Eigenschaften des Objekts.
Nachdem Sie Prozeduren innerhalb des Klassenmoduls definiert haben, können Sie das neue Objekt erstellen, indem Sie eine neue Instanz der -Klasse erstellen. Deklarieren Sie eine Variable des durch die Klasse definierten Typs, um eine neue Instanz einer Klasse zu erstellen. Wenn ein Klassenname z. B. ABasicClass lautet, erstellen Sie folgendermaßen eine neue Instanz dieser Klasse:
Dim abc As New ABasicClass
Wenn Sie den Code ausführen, der diese Deklaration enthält, erstellt Visual Basic die neue Instanz. Sie können deren Methoden und Eigenschaften einfach mithilfe der Variablen anwenden. Wenn Sie beispielsweise eine benutzerdefinierte Methode mit dem Namen "ListNames" definiert haben, können Sie diese wie folgt anwenden:
abc.ListNames
Erstellen der Standardinstanz einer Formularklasse (Access 95)
Wenn Sie ein Formular in der Formularansicht öffnen (von der Benutzeroberfläche oder von Visual Basic aus), erstellen Sie eine Instanz des Klassenmoduls dieses Formulars. Mit anderen Worten, Sie legen Platz im Arbeitsspeicher fest, in dem das Objekt nun vorhanden ist, und können dann seine Methoden im Code aufrufen und seine Eigenschaften im Code festlegen oder zurückgeben wie für jedes integrierte Objekt. Das gleiche gilt, wenn Sie einen Bericht in der Seitenansicht öffnen.
Wenn Sie in Visual Basic-Code auf ein Formular verweisen, arbeiten Sie in der Regel mit der Standardinstanz der Klasse des Formulars. Die Klasse eines Formulars besitzt nur eine Standardinstanz. Sie können auch mehrere Instanzen derselben Klasse des Formulars von Visual Basic aus erstellen. In diesem Fall erstellen Sie Nicht-Standardinstanzen.
Es bestehen vier Möglichkeiten zum Erstellen der Standardinstanz eines Formulars. Sie können ein vorhandenes Formular über die Benutzeroberfläche öffnen, indem Sie die OpenForm-Methode des DoCmd-Objekts ausführen, indem Sie die CreateForm-Methode aufrufen und das neue Formular in die Formularansicht wechseln, oder indem Sie visual Basic verwenden, um eine Variable vom Typ Form zu erstellen, die auf die Standardinstanz verweist. Im folgenden Beispiel wird das Formular Employees geöffnet und mit einer Variablen des Typs Form darauf gezeigt.
Dim frm As Form
DoCmd.OpenForm "Employees"
Set frm = Forms!Employees
Access bietet auch eine Verknüpfung, mit der Sie in einem Schritt ein Formular öffnen und auf eine Methode, eine Eigenschaft oder ein Steuerelement des Formulars verweisen können. Sie verweisen folgendermaßen auf das Klassenmodul des Formulars:
Form_Employees.Visible = True
Form_Employees.Caption = "New Employees"
Wenn Sie diesen Code ausführen, öffnet Access das Formular Mitarbeiter in der Formularansicht, sofern es noch nicht geöffnet ist, und legt die Beschriftung des Formulars auf "Neue Mitarbeiter" fest. Das Formular ist erst sichtbar, wenn Sie seine Visible-Eigenschaft explizit auf True festgelegt haben. Wenn die Ausführung der Prozedur, die diesen Code aufruft, abgeschlossen ist, wird diese Instanz des Formulars zerstört. Das heißt, das Formular ist geschlossen.
Wenn Sie versuchen, diesen Code auszuführen, während das Formular "Employees" in der Entwurfsansicht geöffnet ist, wird von Access ein Laufzeitfehler generiert. Das Formular muss entweder in der Formularansicht oder darf gar nicht geöffnet sein.
Wenn Sie diese Syntax verwenden, um eine Eigenschaft oder ein Steuerelement des Formulars zu ändern, gehen die Änderungen verloren, wenn die Instanz des Formulars gelöscht wird. Dies trifft immer dann zu, wenn Sie eine Eigenschafteneinstellung für ein Formular in der Formularansicht ändern. Ändern Sie die Eigenschaft in der Entwurfsansicht, und speichern Sie die Änderungen mit dem Formular.
Erstellen mehrerer nicht standardmäßiger Formularinstanzen
Sie können mehrere Nicht-Standardinstanzen einer Klasse eines Formulars erstellen, wenn Sie mehrere Instanzen des Formulars gleichzeitig anzeigen möchten. Sie möchten z. B. die Datensätze für einen Angestellten und seinen Vorgesetzten gleichzeitig anzeigen. Dabei können Sie eine Instanz des Formulars Employees zur Anzeige des Angestelltendatensatzes und eine Instanz zur Anzeige des Vorgesetztendatensatzes erstellen.
Wenn Sie neue Nicht-Standardinstanzen einer Klasse eines Formulars aus Visual Basic heraus erstellen möchten, deklarieren Sie eine Variable, deren Typ der Klassenname des Formularmoduls ist. Schließen Sie das Schlüsselwort New in der Variablendeklaration ein. Beispielsweise erstellt der folgende Code eine neue Instanz des Formulars Employees und weist sie einer Variablen des Typs Form zu.
Dim frm As New Form_Employees
Diese Nicht-Standardinstanz des Formulars ist nicht sichtbar, bis Sie deren Eigenschaft Visible explizit festlegen.
Wenn die Ausführung der Prozedur, die diese Instanz erstellt, abgeschlossen ist, wird die Instanz aus dem Arbeitsspeicher entfernt, es sei denn, Sie haben die Variable deklariert, die sie als Variable auf Modulebene darstellt. Da Variablen auf Modulebene ihre Werte beibehalten, bis sie mit dem Befehl Zurücksetzen im Menü Ausführen oder der Schaltfläche Zurücksetzen auf der Symbolleiste zurückgesetzt werden, bleibt das Formular geöffnet, wenn die Variable als Variable auf Modulebene deklariert wurde.
Alle von Ihnen festgelegten Eigenschaften beeinflussen diese Instanz der Klasse des Formulars, werden jedoch nicht mit dem Formular gespeichert. Auch kann keine neue Instanz der Klasse des Formulars erstellt werden, wenn das Formular in der Entwurfsansicht geöffnet ist.
Auf eine nicht standardmäßige Instanz der Klasse eines Formulars kann nicht über den Namen in der Forms-Auflistung verwiesen werden. Verweisen Sie darauf nur anhand der Indexnummer. Da Sie mehrere Nicht-Standardinstanzen eines Formulars erstellen können und jede Instanz den gleichen Namen besitzt, kann die Auflistung Forms mehrere gleichnamige Formulare enthalten, die sich lediglich durch ihre Indexnummer unterscheiden.
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.