Sie kennen sicherlich die Möglichkeit, über sogenannte DropDown-Listen (Auswahlliste) eine Auswahl zu treffen. Eine Auswahlliste wird über das Menü Daten / Datentools / Datenüberprüfung erzeugt. Wenn Sie als Gültigkeitskriterium Liste auswählen und unter Quelle die einzelnen Auswahlmöglichkeiten durch Semikolon (;) getrennt angeben, erscheint nach Beenden des Befehls in der gewählten Zelle die entsprechende DropDown-Liste.
Alternativ kann anstatt der einzelnen Auswahlbegriffe auch eine Bezug zu einer Excel-Tabelle angegeben werden. In unserem Beispiel befinden sich die Auswahlbegriffe auf einem eigenen Tabellenblatt. Um diese Liste als mögliche Auswahlkriterien für die Datenüberprüfung festzulegen, geben Sie dieser einfach einen Namen, z. B. auswahl, siehe Abbildung 1.
Abbildung 1
Nachdem der Bereichsname für die Auswahlliste definiert ist, können wir die Gültigkeitsprüfung auf unserem Erfassungsblatt einrichten. Im Beispiel sollen für die wöchentliche Besprechung die Teilnehmer über ein DropDown-Menü ausgewählt werden.
Markieren Sie dazu den Zellbereich B4:B14 und tragen nun den Bereichsnamen auswahl als Listen-Quelle in die Datenüberprüfung als Gültigkeitskriterium ein, siehe Abbildung 2.
Abbildung 2
Damit stehen die Auswahlmöglichkeiten in den genannten Zellen per DropDown-Liste zur Verfügung.
Allerdings kann standardmäßig nur jeweils ein einziger Begriff, im Beispiel also ein einziger Teilnehmer ausgewählt werden. Sobald ein anderer Teilnehmer ausgewählt wird, wird der vorher ausgewählte wieder überschrieben und mit dem neuen ersetzt.
Um diese Problematik zu beseitigen, können Sie den nachfolgenden VBA-Code verwenden. Damit wird die Mehrfachauswahl per DropDown-Liste ermöglicht.
Erfassen Sie den VBA-Code im Code-Modul des Tabellenblatts, auf dem Sie die Funktion benötigen, da der Code die über die Change-Funktion des Arbeitsblatts aktiviert wird.
Private Sub Worksheet_Change(ByVal Target As Range) '** Mehrfachauswahl über DropDown-Liste (Gültigkeitsprüfung) '** Einfügen im Code-Container des betreffenden Arbeitsblattes '** Dimensionierung der Variablen Dim rngDV As Range Dim wert_old As String Dim wertnew As String '** Errorhandling On Error GoTo Errorhandling '** Mehrfachauswahl im definierten Bereich (Bsp. B4:B14) durchführen If Not Application.Intersect(Target, Range("B4:B14")) Is Nothing Then '**Range definieren Set rngDV = Target.SpecialCells(xlCellTypeAllValidation) If rngDV Is Nothing Then GoTo Errorhandling '** Prüfen, ob eine gültige Zelle ausgewählt wurde und Werte eintragen If Not Application.Intersect(Target, rngDV) Is Nothing Then Application.EnableEvents = False wertnew = Target.Value Application.Undo wertold = Target.Value Target.Value = wertnew If wertold <> "" Then If wertnew <> "" Then Target.Value = wertold & ", " & wertnew End If End If End If Application.EnableEvents = True End If Errorhandling: Application.EnableEvents = True End Sub
Wenn Sie den Code eingefügt haben, steht die Funktion der Mehrfachauswahl wie gewünscht zur Verfügung, siehe Abbildung 3.
Abbildung 3
Sie können nun beliebig viele Auswahlmöglichkeiten zu einer einzigen Zellen hinzufügen. Die einzelnen Begriffe werden mit Kommata getrennt. Wenn Sie ein anderes Trennzeichen wie Semikolon (;) oder Schrägstrich (/) verwenden möchten, so können Sie den VBA-Code in folgender Zeile einfach anpassen, siehe rotes Zeichen.
If wertnew <> "" Then
Target.Value = wertold & "/ " & wertnew
End If
Die Beispieldatei können Sie über über den folgenden Download-Link herunterladen.