Listenfelder mit Mehrfachauswahl auslesenIn Listenfeldern kann man unter bestimmten Voraussetzungen nicht nur einen, sondern auch mehrere Einträge auswählen. Natürlich ist das Auslesen der ausgewählten Einträge dann auch nicht mehr ganz so trivial wie bei der Einfachauswahl. Lesen Sie hier, wie es funktioniert.

BeispieldatenbankDas nachfolgend beschriebene Beispielformular frmListenfeldMehrfachauswahl finden Sie in der Beispieldatenbank Listenfeld.zip.

Mehrfachauswahl per ListenfeldEs gibt zwei verschiedene Einstellungen für die Eigenschaft Mehrfachauswahl von Listenfeldern, mit denen Sie eine Mehrfachauswahl erreichen können: Einzeln und Erweitert.
Bei der Variante Einzeln können Sie einen Eintrag per Mausklick aktivieren oder deaktivieren, aber niemals mehrere Einträge gleichzeitig markieren - etwa durch gleichzeitiges Drücken der Umschalt- oder der Steuerungstaste.
Dies erlaubt erst die Einstellung Erweitert. Ohne Verwendung zusätzlicher Schaltflächen wird hier nur jeweils der zuletzt angeklickte Eintrag aktiviert. Wenn Sie beim Auswählen die Umschalttaste gedrückt halten, werden alle Einträge markiert, die zwischen dem zuerst und dem zuletzt angeklickten Eintrag liegen - inklusive dieser beiden Einträge.
Etwas differenzierter geht es mit gedrückter Steuerungstaste: Damit simulieren Sie praktisch den Modus Einzeln, der aktuell angeklickte Eintrag wird also je nach derzeitigem Zustand entweder aktiviert oder deaktiviert.
Zusätzlich können Sie beim Modul Erweitert noch durch Ziehen eines imaginären Rahmens zwischen dem ersten und dem letzten gewünschten Eintrags mehrere Einträge markieren. Auslesen mehrerer markierter EinträgeInteressant wird es beim Auslesen der markierten Einträge. Dazu stellt das Listenfeld eine Auflisting namens ItemsSelected, die Werte des Typs Variant enthält.
Die folgende Ereignisprozedur liest nach jeder Aktualisierung die ID's der markierten Einträge aus und trägt sie in das Textfeld txtMitarbeiter ein:
Private Sub lstMitarbeiter_AfterUpdate()
Dim var As Variant
Dim str
For Each var In Me.lstMitarbeiter.ItemsSelected
str = str & ";" & var
Next var
Me!txtMitarbeiter = Mid(str, 2)
End Sub
|