DropDown Liste mit Mehrfachauswahl

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

 

Vielen Dank an dieser Stelle an Andreas Thehos, der das Beispiel in dem nachfolgenden Video noch einmal vorstellt und zusammenfasst.

{youtube}EM8z5oAF5t8{/youtube}

 

Weitere Videos von Andreas Thehos zum Thema Datenüberprüfung:

Andreas Thehos hat in seinen Videos die Datenüberprüfung über benannte Bereiche wie immer sehr gut aufbereitet.

Video 1:

{youtube}5bX5pEO8HKc{/youtube}

Video 2:

{youtube}LIpjTiwNWtg{/youtube}

 

Die Beispieldatei können Sie über über den folgenden Download-Link herunterladen.