Formulare und Steuerelemente referenzieren

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):

Referenzieren eines Formulars

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! verwenden Sie einfach das Schlüsselwort Me. Die obige Prozedur könnte also auch so aussehen:

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:

Schreibe einen Kommentar