Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2008.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Zusammenfassung

Erfahren Sie, wie Sie auf Formulare sowie darin enthaltene Unterformulare zugreifen

Techniken

VBA, Formulare, Steuerelemente

Voraussetzungen

Access 2000 und höher

Beispieldateien

-

Shortlink

552

Zugriff auf Formulare

André Minhorst, Duisburg

Das Referenzieren von Formularen und Unterformularen ist einfach - wenn man den Dreh einmal raus hat. Auf dem Weg dahin hilft Ihnen dieser Beitrag, der den Zugriff auf Formulare von außen, von anderen Formularen aus, von Formularen auf Unterformulare, von außen auf Unterformulare und mehr erläutert. Nach der Lektüre sollten Sie damit keine Probleme mehr haben - und wenn doch, schauen Sie halt einfach nochmal rein.

Zugriff auf Formulare von außen

Wenn Sie von außen - also vom Direktfenster, von einem anderen Formular oder einer VBA-Routine auf ein Formular zugreifen möchten, setzt dies das Vorhandensein des in der Formularansicht oder Datenblattansicht geöffneten Formulars voraus. Der Zugriff erfolgt dann über die folgende Anweisung, hier für den Namen eines Formular namens frmArtikel:

Forms!frmFormular.Name

Für andere Eigenschaften wie etwa die Datensatzquelle setzen Sie hinter den Punkt die entsprechende Eigenschaft ein:

Forms!frmFormular.RecordSource

VBA-Eigenschaften ermitteln

Das Eigenschaftsfenster des Formularentwurfs hat die angenehme Eigenschaft, dass es direkt alle verfügbaren Eigenschaften mit Namen anzeigt. Wenn Sie von hier aus nach dem unter VBA verwendbaren englischen Eigenschaftsnamen suchen, können Sie einfach die Einfügemarke in die Eigenschaft im Eigenschaftsfenster platzieren und auf F1 klicken. Die Onlinehilfe zeigt dann die VBA-Variante der Eigenschaft an. Aber auch die Eigenschaften selbst geben Sie im Eigenschaftsfenster in der deutschen Fassung an, auch wenn im folgenden Beispiel scheinbar die englische Variante funktioniert. Wenn Sie nämlich etwa in einem Textfeld den Namen des Formulars ausgeben möchten, schreiben Sie in dessen Eigenschaft Steuerelementinhalt den folgenden Ausdruck:

=[Name]

Formularbezüge in Eigenschaftsfeldern

Die Eigenschaft Name ist ein Sonderfall, weil sie im Deutschen wie im Englischen gleich lautet. Bei allen anderen Eigenschaften verwenden Sie den englischen Begriffen entsprechende deutsche Ausdrücke. Der Bezug auf die Datenherkunft eines Formulars lautet unter VBA etwa so:

Forms!frmHF.Recordsource

In ein Eigenschaftsfeld müssen Sie hingegen den folgenden Ausdruck eintragen:

Formulare!frmHF!Datenherkunft

Wenn Sie hier unsicher sind, verwenden Sie den Ausdrucksgenerator, den Sie per Mausklick auf die neben dem Eigenschaftsfeld befindliche Schaltfläche mit den drei Punkten öffnen (s. Abb. 1).

pic007.tif

Abb. 1: Der Ausdrucksgenerator hilft beim Zusammenstellen von Ausdrücken mit deutschen Bezeichnungen.

Zugriff auf eigene Eigenschaften des

Formulars

Wenn Sie von einem Formulars auf die Eigenschaften des gleichen Formulars zugreifen möchten, können Sie dies einfach über die Verwendung des Eigenschaftsnamens tun. Folgende Anweisung, die beim Öffnen des Formulars ausgelöst wird, würde den Namen ordnungsgemäß ausgeben:

Private Sub Form_Open(Cancel As Integer)

    MsgBox Name

    End Sub

Dies ist aber so nicht gebräuchlich. Um Verwechslungen zu vermeiden, fügt man als Bezug auf sich selbst das Objekt Me vorne an:

MsgBox Me.Name

Das Schlüsselwort Me ist dabei weniger ein Verweis auf das Formular selbst, sondern auf seine Instanz. Es gilt auch in Zusammenhang mit der Verwendung von Klassenmodulen ohne Formular. Sie referenzieren darüber immer die jeweilige Instanz des Objekts. Der Verweis auf die Klasse selbst kann auch über die folgende Variante hergestellt werden:

Form_frmF.Name

Form_frmF wäre dabei der Name des Klassenmoduls - Besonderheiten hierzu erfahren Sie weiter unten. Die nächste Variante referenziert das Formular über die Auflistung Forms, die alle aktuell geöffneten Formulare enthält:

Forms!frmFormular.Name

Zu bedenken ist, dass die Variante mit dem Schlüsselwort Me im Klassenmodul des Formulars selbst den anderen Varianten vorzuziehen ist. Der Grund ist einfach: Wenn Sie den Namen des Formulars ändern, brauchen Sie den Code nicht anzupassen, weil er sich immer auf das eigene Formular bezieht. Gleiches gilt für das Kopieren des Codes in ein anderes Formular: Hier funktionieren Bezüge über Me problemlos weiter.

Zugriff auf andere Formulare

Die beiden zuletzt genannten Varianten funktionieren von überall aus, aber nur unter bestimmten Voraussetzungen. Uneingeschränkt greifen sie nur, wenn das Formular aktuell geöffnet ist.

Debug.Print Forms!frmF.Name

würde beispielsweise den Fehler aus Abb. 2 hervorrufen. Anders sieht es mit folgendem Aufruf aus - ebenfalls im Direktfenster abgesetzt (? ist die Kurzfassung für Debug.Print, die jedoch nur im Direktfenster funktioniert):

pic001.tif

Abb. 2: Dieser Fehler tritt auf, wenn man ein ungeöffnetes Formular über die Forms-Auflistung referenziert.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Verwandte Beiträge:

Unterformulare: Daten anlegen und löschen

Ereignisprozeduren implantieren

Modale Dialoge mal anders

Formulare im Blickpunkt

Performanter Webzugriff auf MySQL-Datenbanken

Formularposition speichern und wiederherstellen

Benutzerdefinierte Formatierung

TreeView-Elemente im Griff

Listenfeld und Details in einem Formular

Lookup-Daten verwalten

HTML-Editor-Steuerelement

Formulare generieren

Suchformularassistent

Unterformulare im Gleichschritt

Meldungsfenster im Eigenbau

Steuerelemente zur Laufzeit verschieben

Google Earth ferngesteuert, Teil II

Benutzerverwaltung

Excel-Import-Assistent im Eigenbau

Effizientes Codieren

Validieren mit Klasse

Temporäre Datensatzgruppen

Suchformular für die Datenblattansicht

Preise und Mehrwertsteuer verwalten

Formular-Assistenten

Transparenz und andere Effekte in Formularen

Projektzeitmanager

Access-FAQ: Rund um Access

Formulare öffnen

Suchfunktion mit phonetischem Vergleich

Formulare für die Dateneingabe

Rund um Binärzahlen

Zugriff auf Daten in Formularen und Steuerelementen

Standard-Lookupformulare

© 2003-2015 André Minhorst Alle Rechte vorbehalten.