Moin. Ich bin Sönke Schäfer, der Datenschäfer. Wenn Du mit Access arbeitest, kennst Du das Problem: Du willst mehrere Spalten anzeigen, übersichtlich, klickbar, am besten ohne viel Code – aber auch nicht mit halbgaren Lösungen. Und genau da steigen wir heute ein.

Die Listbox ist mächtig. Aber viele nutzen sie nur einspaltig oder als statisches Ding. Dabei kannst Du mit ein paar Zeilen VBA und einer sauberen Abfrage richtig was rausholen – sogar für Filter, Navigation oder Auswahlsteuerung.

Wozu überhaupt mehrspaltig?

Weil echte Daten nicht in eine Spalte passen. Kunden haben IDs, Namen, Orte. Produkte haben Nummern, Beschreibungen, Preise. Und Du willst das anzeigen. Im Überblick. Und auswählbar.

Die meisten KMUs, die ich begleite, haben genau da Bedarf: Klarheit bei der Auswahl. Ohne ständiges Aufpoppen von Fenstern. Direkt im Formular.

Listbox dynamisch füllen per SQL

Die einfachste Methode: Eine SQL-Zeile zur Laufzeit reinschieben.

Me!lstKunden.RowSource = _
    "SELECT KundeID, Nachname, Vorname FROM tblKunden ORDER BY Nachname;"
Me!lstKunden.ColumnCount = 3
Me!lstKunden.ColumnWidths = "0cm;4cm;4cm"

Erklärung:

  • KundeID ist gebunden, aber unsichtbar (Breite 0cm)
  • Nachname und Vorname sind sichtbar

Das klappt übrigens auch mit T-SQL, wenn Du gegen SQL Server gehst – per verknüpfter Tabelle oder per ADO.

Interaktive Auswahl auslesen

Du willst wissen, was der Nutzer geklickt hat? Ganz einfach:

Dim kundennummer As Long
kundennummer = Me!lstKunden.Value

Wenn Du auch die zweite oder dritte Spalte brauchst:

Dim name As String
name = Me!lstKunden.Column(1) & " " & Me!lstKunden.Column(2)

Column(0) ist die gebundene Spalte. Column(1) ist die erste sichtbare Spalte usw.

Mehrere Einträge auswählen lassen

Du willst, dass der Nutzer mehrere Zeilen anklicken kann? Dann setze:

Me!lstKunden.MultiSelect = 1 ' 1 = Einfach, 2 = Erweitert (Strg/Shift)

Und zum Auslesen:

Dim i As Integer
For i = 0 To Me!lstKunden.ListCount - 1
    If Me!lstKunden.Selected(i) Then
        Debug.Print "Gewählt: " & Me!lstKunden.Column(1, i)
    End If
Next i

Tipp vom Datenschäfer

Setz Dir feste ColumnWidths, sonst wird’s wild. Und immer: Gebundene ID verstecken, sichtbare Infos zeigen. So trennst Du sauber zwischen Anzeige und Datenlogik.

„Wenn Du das richtige auswählst, musst Du’s später nicht raten.“

Vision statt Flickwerk

Ich will, dass Du mit Deiner Software Klarheit schaffst. Für die Leute, die täglich damit arbeiten. Mehrspaltige Listboxen sind kein Luxus. Sie sind Struktur – und die spart Zeit. Und Nerven.

Wenn Du willst, helf ich Dir beim Aufbau. Vom Formular bis zur automatisierten Datenauswertung.

Datenschäfer: Analyse, Auswertung und Automatisierung für KMU im Norden 🐑

Categories:

Tags:

Comments are closed