Datenblatt-Spaltenbreiten automatisch anpassen

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Die Datenblattansicht ist die flexibelste Möglichkeit, um Daten in Tabellenform anzuzeigen. Dies geht sogar soweit, dass der Benutzer selbst die Spaltenbreiten anpassen kann, um jeweils den kompletten Inhalt der Felder einer Spalte anzuzeigen. Normalerweise brauchen Sie für das Einstellen der optimalen Breite jedoch zumindest einen Doppelklick je Spalte. Wir zeigen, wie Sie dies noch viel schneller und einfacher hinbekommen – bis hin zur vollautomatischen Lösung.

Bereits die Datenblattansicht einer Tabelle zeigt fast die kompletten Möglichkeiten dieser Ansicht bezüglich des Anpassens der Spaltenbreiten. Wenn Sie mit der linken Maustaste auf den schmalen Bereich zwischen zwei Spaltenüberschriften klicken und den Mauszeiger dann bei gedrückter Maustaste nach links oder rechts bewegen, ändern Sie die Spaltenbreite. Ein Doppelklick optimiert die Spaltenbreite, sodass nicht nur alle Inhalte eines Feldes sichtbar sind, sondern auch die komplette Spaltenüberschrift (s. Bild 1).

pic001.png

Bild 1: Eine Tabelle in der Datenblattansicht mit optimierten Spaltenbreiten

Allein bei Memofeldern funktioniert dies nicht richtig: Man hätte erwarten können, dass Access hier auch bei mehrzeiligen Inhalten die breiteste Zeile ermittelt und die Spaltenbreite entsprechend auslegt. Dies ist aber nicht der Fall: Access untersucht beim Doppelklick auf den Bereich zum Anpassen der Spaltenbreite nur die Zeichen bis zum ersten Zeilenumbruch, nicht aber eventuell folgende Zeilen. Die Datenblattansicht ist aber ohnehin kein besonders nettes Biotop für Memofelder, daher stört dies nicht weiter.

Anzumerken ist noch, dass sich die Optimierung immer nur auf die jeweils sichtbaren Datensätze bezieht. Wenn Sie also in den ersten Zeilen nur kurze Namen haben und die Spaltenbreite per Doppelklick optimieren, haben Sie nur wenig davon, wenn ein paar Zeilen weiter unten ein Müller-Schmidt-Meier kommt – Sie werden dann erneut doppelt auf den Spaltenkopf-Zwischenraum klicken müssen.

Automatisierungsmöglichkeit im Formular

Was in der Datenblattansicht einer Tabelle oder Abfrage nicht möglich ist, aber von Formularen durchaus verlangt werden kann, ist eine VBA-gesteuerte Optimierung der Spaltenbreiten. Für Beispielzwecke brauchen wir ein Haupt- und ein Unterformular, wobei das Hauptformular nur als Container für das Unterformular und eine Schaltfläche dient, deren Zwecke wir später erläutern.

Haupt- und Unterformular des Beispiels heißen frmAdressen und sfmAdressen, das Unterformular bezieht seine Daten aus der Tabelle tblAdressen und besitzt als Standardansicht den Wert Datenblatt. Die Schaltfläche aus Bild 2 können Sie bereits einfügen, wir werden sie aber erst später mit Code füllen.

pic002.png

Bild 2: Entwurfsansicht des Beispielformulars zum automatischen Optimieren der Spaltenbreiten

Der ganze Trick beim automatischen Anpassen der Spaltenbreite unter VBA besteht darin, eine spezielle Eigenschaft namens ColumnWidth auf den Wert -2 einzustellen. Diese Eigenschaft besitzen längst nicht alle Steuerelementtypen – Bezeichnungsfelder weisen diese beispielsweise nicht auf. Sie liefert normalerweise die Breite der Spalte in Twips und Sie können dieser Eigenschaft auch eine Breite in Twips zuweisen, um diese per Code einzustellen. Der Wert 0 stellt die Breite auf den Standardwert ein und -1 blendet die Spalte aus. Dies wirkt sich auch noch auf eine weitere Eigenschaft aus, nämlich ColumnHidden. Diese erhält beim Ausblenden den Wert True. Sie können eine Spalte allerdings auch gleich über die Eigenschaft ColumnHidden ausblenden.

Mit dem Wissen um diese Eigenschaft sollten wir nun in der Lage sein, alle Spalten des Unterformulars beim Öffnen auf die Breite der angezeigten Texte zu bringen. Allerdings können wir dabei nicht einfach alle Steuerelemente durchlaufen, sondern beschränken uns auf diejenigen, die Daten für die Datenblattansicht liefern – und dies sind in der Regel nur Textfelder, Kombinationsfelder und Kontrollkästchen.

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

Testzugang

eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar