Je mehr Sie VBA zur Steuerung von Formularen und Steuerelementen einsetzen, desto öfter greifen Sie dabei per Code auf die Inhalte oder Eigenschaften dieser Elemente zu – beispielsweise, um den Wert eines Feldes auszulesen oder einen Eintrag eines Kombinationsfeldes auszuwählen. Dieser Artikel liefert eine übersicht, wie Sie von verschiedenen Stellen aus Formulare und Steuerelemente referenzieren.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1110_FormulareReferenzieren.mdb.
Global referenzieren
Wir beginnen mit den Verweisen, die Sie von beliebigen Stellen aus nutzen können. Damit ist das Testen für den Anfang am einfachsten: Sie können die folgenden Anweisungen einfach in das Direktfenster des VBA-Editors eingeben, dass Sie mit Strg + G sichtbar machen.
Beginnen wir mit dem nackten Formular. Ein Formular referenzieren Sie mit einem Verweis auf ein Element der Forms-Auflistung.
Wenn Sie beispielsweise den Namen eines Formulars ermitteln möchten, können Sie die folgende Anweisung absetzen:
Debug.Print Forms.Item("frmBeispiel").Name
Kürzer und gebräuchlicher sind jedoch diese Versionen (siehe Bild 1):
Bild 1: Referenzieren eines Formulars
Debug.Print Forms("frmBeispiel").Name Debug.Print Forms!frmBeispiel.Name
Mit der Ausrufezeichen-Syntax greifen Sie auf alle Elemente von Auflistungen zu, die benutzerdefiniert sind, die Sie also selbst erstellt haben. Das gilt im Folgenden auch für Steuerelemente.
Wenn das Formular gerade das einzige geöffnete Formular ist, können Sie auch diese Syntax nutzen:
Debug.Print Forms(0).Name
Beachten Sie, dass dies immer funktioniert, wenn das betroffene Formular geöffnet ist – egal, in welcher Ansicht. Sie können also auch Eigenschaften von Formularen in der Entwurfsansicht über diese Anweisung ausgeben.
Beispiel: Filter
Sie können so von außen, also vom Direktfenster oder auch von einem anderen Formular aus, Eigenschaften lesen und einstellen. Wenn Sie beispielsweise einen Filter für ein Formular festlegen möchten, verwenden Sie diese beiden Anweisungen:
Forms!frmBeispiel.Filter = "Artikelname = 'Chang'"
Forms!frmBeispiel.FilterOn = True
Um den Filter zu deaktivieren, stellen Sie die Eigenschaft Filter auf den ursprünglichen Wert ein, also eine leere Zeichenkette:
Forms!frmBeispiel.Filter = ""
FilterOn wird dabei automatisch auf False eingestellt, was sich leicht prüfen lässt:
Forms!frmBeispiel.FilterOn Falsch
Referenz speichern
Wenn Sie wie im Beispiel oben mehrfach auf ein referenziertes Objekt zugreifen, können Sie die Referenz auch in einer Variablen des entsprechenden Objekttyps speichern und auf die Variable zugreifen, statt immer wieder neu zu referenzieren. Für ein Formular deklarieren Sie die Variable wie folgt:
Dim frm As Form
Sobald Sie mit Variablen arbeiten, fügen Sie die Anweisungen praktischerweise in eine Prozedur ein, die Sie wie in folgendem Beispiel in einem Standardmodul anlegen (mdlFormReferenzen):
Public Sub FormReferenz() Dim frm As Form Set frm = Forms!frmBeispiel frm.Filter = "Artikelname = 'Chang'" frm.FilterOn = True End Sub
Sich selbst referenzieren
Wenn Sie innerhalb des Klassenmoduls eines Formulars auf Formular-Eigenschaften zugreifen möchten, können Sie dies ebenfalls über die oben vorgestellten Referenzierungen durchführen.
Die Schaltfläche cmdNameAusgeben löst bei Mausklick eine Prozedur aus, die den Namen des Formulars frmBeispiel ausgibt:
Private Sub cmdNameAusgeben_Click() MsgBox Forms!frmBeispiel.Name End Sub
Für den Zugriff auf ein Formular-Objekt innerhalb des Klassenmoduls des Formulars gibt es jedoch eine Vereinfachung.
Statt Forms!
Private Sub cmdNameAusgeben_Click() MsgBox Me.Name End Sub
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: