Datenblatt per VBA: Spalten ein- und ausblenden

Für die Datenblattansicht unter Access gibt es eine Menge Einstellungsmöglichkeiten. Diese haben wir ausführlich im Artikel „Datenblattansicht im Griff“ in Ausgabe 10/2011 beschrieben. Nun werfen wir einen Blick darauf, wie Sie diese Einstellungen per VBA einlesen und einstellen und welche Nutzungsmöglichkeiten sich daraus ergeben – zum Beispiel das einfache Ein- und Ausblenden der Spalten des Datenblatts.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1806_DatenblattPerVBA.accdb.

Vorbereitung

Wir verwenden eine Beispieldatenbank mit den Tabellen der Suedsturm-Datenbank und dort speziell mit den Tabellen tblArtikel, tblKategorien und tblLieferanten.

Wir stellen ein Unterformular namens sfmArtikel, das wir über die Eigenschaft Datensatzquelle an die Tabelle tblArtikel binden. Danach ziehen wir alle Felder dieser Tabelle in den Detailbereich des Entwurfs des neuen Formulars. Nach dem Einstellen der Eigenschaft Standardansicht auf Datenblatt speichern und schließen wir das Formular.

Nun erstellen wir das Hauptformular für dieses Formular und speichern es unter dem Namen frmArtikel. Das Formular sfmArtikel ziehen wir aus dem Navigationsbereich in den Entwurf des Hauptformulars, sodass dieses im Entwurf nun wie in Bild 1 aussieht.

Entwurf der Datenblattansicht

Bild 1: Entwurf der Datenblattansicht

Außerdem stellen wir für das Hauptformular die Eigenschaften Datensatzmarkierer, Navigationsschaltflächen und Bildlaufleisten jeweils auf Nein ein und Automatisch zentrieren auf Ja. Schließlich soll das Unterformular sich mit dem Hauptformular vergrößern lassen, daher legen wir für die Eigenschaften Horizontalter Anker und Vertikaler Anker jeweils den Wert Beide fest.

Nach dem Wechsel in die Formularansicht des Hauptformulars erwartet uns dann die Ansicht aus Bild 2.

Datenblatt in der Formularansicht

Bild 2: Datenblatt in der Formularansicht

Spalten ein- und ausblenden per Benutzeroberfläche

Wie können wir nun per VBA eine Spalte ein- oder ausblenden über die Benutzeroberfläche geht das ganz einfach: Dort klicken wir mit der rechten Maustaste auf die entsprechende Spaltenüberschrift und wählen den Eintrag Felder ausblenden aus dem Kontextmenü aus (siehe Bild 3).

Feld ausblenden per Kontextmenü

Bild 3: Feld ausblenden per Kontextmenü

Spalten ein- und ausblenden per VBA

Und wie bekommen wir das per VBA hin Wir können es ja einfach mal über das Direktfenster probieren, indem wir dort entsprechende Eigenschaften ändern. Um zu prüfen, ob wir etwa die Spalte Artikelname korrekt referenzieren, wollen wir einmal den Inhalt des aktuellen Feldes ausgeben, was auch gelingt:

Debug.Print Forms!frmArtikel!sfmArtikel.Form!Artikelname
  Chai

Können wir so auch etwa die Breite des Feldes einstellen Die Breite können wir zumindest ausgeben:

Debug.Print Forms!frmArtikel!sfmArtikel.                                  Form!Artikelname.width
 1701 

Lässt sie sich so auch ändern Der folgende Befehl, der die Spaltenbreite verdoppel sollte, zeigt jedenfalls keine Wirkung:

Forms!frmArtikel!sfmArtikel.Form!Artikelname.Width                                                   = 3400

Damit gehen wir dann zum Ein- und Ausblenden über – funktioniert das wenigstens Dazu nutzen wir die Visible-Eigenschaft, erst einmal zum Auslesen des aktuellen Wertes:

Debug.Print Forms!frmArtikel!sfmArtikel.                                Form!Artikelname.Visible
Wahr

Dann versuchen wir, die Spalte mit der folgenden Anweisung auszublenden:

Forms!frmArtikel!sfmArtikel.Form!Artikelname.Visible                                                  = False

Das liefert immerhin einmal eine Reaktion – wenn auch nur in Form einer Fehlermeldung (siehe Bild 4). Wir können das Feld natürlich nicht ausblenden, wenn dieses den Fokus hat. Also verschieben wir diesen auf ein anderes Feld, zum Beispiel Artikel-ID, und führen den Befehl erneut aus. Und es geschieht wieder nichts! Offensichtlich kommen wir an die Spalten nicht über den Verweis auf die dahinterliegenden Steuer-elemente heran.

Fehler beim Zugriff auf die Visible-Eigenschaft eines aktiven Steuerelements

Bild 4: Fehler beim Zugriff auf die Visible-Eigenschaft eines aktiven Steuerelements

Eigenschaften für Datenblattspalten

Da stellt sich doch die Frage, ob die für Steuer-elemente in der Formularansicht gültigen Eigenschaften überhaupt in der Datenblattansicht wirken. Also durchsuchen wir einmal den Objektkatalog etwa nach den Eigenschaften für das Textfeld-Steuerelement. Und hier werden wir dann auch schnell fündig: Mit ColumnHidden, ColumnOrder und ColumnWidth finden wir Eigenschaften, die sich direkt auf Spalten beziehen (siehe Bild 5).

Einstellungen für Datenblattspalten

Bild 5: Einstellungen für Datenblattspalten

Die Eigenschaft ColumnHidden für die Spalte Artikelname sollte also zum Beispiel den Wert Falsch ausgeben, was auch geschieht:

 Forms!frmArtikel!sfmArtikel.Form!Artikelname.                                            ColumnHidden
Falsch

Nun wollen wir die Spalte einmal ausblenden. Dazu verwenden wir diesen Befehl:

Forms!frmArtikel!sfmArtikel.Form!Artikelname.                                    ColumnHidden = True

Und es gelingt – die Spalte ist nicht mehr zu sehen (siehe Bild 6). Auf die gleiche Weise können wir die Spalte auch wieder einblenden, dazu brauchen wir die Eigenschaft ColumnHidden nur wieder auf False einzustellen.

Ausblendete Spalte

Bild 6: Ausblendete Spalte

Komfortables Ein- und Ausblenden

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