Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Dropdown / Mehrfachauswahl

Dropdown / Mehrfachauswahl
09.11.2016 14:12:14
Berndt
Hallo Leute,
habe auf
http://www.excel-inside.de/funktionen-a-tipps/895-dropdown-liste-mit-mehrfachauswahl
ein richtig cooles Makro gefunden, um mehrere Namen über einer Dropdown auszuwählen.
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. D6:D24) durchführen
If Not Application.Intersect(Target, Range("D6:D24")) 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
Allerdings benötige ich beim Optimieren noch etwas Hilfe.
Klicke ich zweimal auf den selben Namen in der Dropdown, doppelt sich dieser in der Zelle. Das heisst eine Prüfung müsste rein, ob der Name vll. schon ausgewählt wurde.
Und möchte ich z.B. von 3 Namen 2 händig löschen, schiebt das Makro einen Riegel vor und verhindert dies.
Vll. kann mir jmd mit diesen 2 Problemen helfen.
VG Berndt
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dropdown / Mehrfachauswahl
12.11.2016 19:28:11
GraFri
Hallo
Für händisches löschen kenn ich keine Lösung. Würde alles löschen und neu eingeben.
Doppelte Einträge vermeiden:
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. D6:D24) durchführen
If Not Application.Intersect(Target, Range("D6:D24")) 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
If InStr(wertold, wertnew) = 0 Then
Target.Value = wertold & ", " & wertnew
Else
Target.Value = wertold
End If
End If
End If
End If
Application.EnableEvents = True
End If
Errorhandling:
Application.EnableEvents = True
End Sub

mfg, GraFri
Anzeige
AW: Dropdown / Mehrfachauswahl
14.11.2016 09:51:28
Berndt
Vielen Dank. Es funktioniert. freue mich.
doch noch eine Kleinigkeit...
14.11.2016 09:58:21
Berndt
Wie allerding kann ich den fixen Bereich nach unten hin variabel gestalten.
wenn ich folgenden Code verwende funktioniert die Mehrfachauswahl nicht mehr.
Wo liegt der Fehler?
'** Mehrfachauswahl im definierten Bereich (Bsp. D6:D24) durchführen
LZ = Ws.Cells(Ws.Rows.Count, 4).End(xlUp).Row
If Not Application.Intersect(Target, Range("D6:D" & LZ)) Is Nothing Then

VG Berndt
Anzeige
AW: doch noch eine Kleinigkeit...
14.11.2016 18:27:25
GraFri
Hallo
Variabler Bereich:
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
Dim LZ As Integer
'** Errorhandling
On Error GoTo Errorhandling
'** Mehrfachauswahl im definierten Bereich (Bsp. D6:D24) durchführen
'If Not Application.Intersect(Target, Range("D6:D24")) Is Nothing Then
With ActiveSheet
LZ = .Cells(.Rows.Count, 4).End(xlUp).Row
End With
If Not Application.Intersect(Target, Range("D6:D" & LZ)) 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
If InStr(wertold, wertnew) = 0 Then
Target.Value = wertold & ", " & wertnew
Else
Target.Value = wertold
End If
End If
End If
End If
Application.EnableEvents = True
End If
Errorhandling:
Application.EnableEvents = True
End Sub

mfg, GraFri
Anzeige
Danke
15.11.2016 08:52:46
Berndt
Vielen Vielen Dank. Jetzt haut alles hin.

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dropdown-Liste mit Mehrfachauswahl in Excel erstellen


Schritt-für-Schritt-Anleitung

Um eine Dropdown-Liste mit Mehrfachauswahl in Excel zu erstellen, kannst du die folgenden Schritte ausführen:

  1. Daten vorbereiten: Erstelle eine Liste der Einträge, die du in deiner Dropdown-Liste anzeigen möchtest. Diese Liste kann in einer separaten Tabelle oder im gleichen Arbeitsblatt platziert werden.

  2. Dropdown-Liste erstellen:

    • Wähle die Zelle aus, in der die Dropdown-Liste erscheinen soll.
    • Gehe zu Daten > Datenüberprüfung.
    • Wähle Liste aus und gib den Bereich der vorbereiteten Daten ein.
  3. VBA-Code einfügen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Doppelklicke auf das Arbeitsblatt, in dem du die Dropdown-Liste erstellt hast.
    • Füge den folgenden VBA-Code ein:

      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rngDV As Range
      Dim wert_old As String
      Dim wertnew As String
      Dim LZ As Integer
      On Error GoTo Errorhandling
      
      With ActiveSheet
         LZ = .Cells(.Rows.Count, 4).End(xlUp).Row
      End With
      
      If Not Application.Intersect(Target, Range("D6:D" & LZ)) Is Nothing Then
         Set rngDV = Target.SpecialCells(xlCellTypeAllValidation)
         If rngDV Is Nothing Then GoTo Errorhandling
         Application.EnableEvents = False
         wertnew = Target.Value
         Application.Undo
         wert_old = Target.Value
         If wert_old <> "" Then
             If wertnew <> "" Then
                 If InStr(wert_old, wertnew) = 0 Then
                     Target.Value = wert_old & ", " & wertnew
                 Else
                     Target.Value = wert_old
                 End If
             End If
         End If
      End If
      Errorhandling:
      Application.EnableEvents = True
      End Sub
  4. Testen der Dropdown-Liste: Kehre zu Excel zurück und teste die Dropdown-Liste, indem du mehrere Einträge auswählst.


Häufige Fehler und Lösungen

  • Doppelte Einträge: Wenn du denselben Eintrag zweimal auswählst, wird dieser in der Zelle verdoppelt. Um dies zu verhindern, kannst du den oben genannten VBA-Code verwenden, der prüft, ob der Eintrag bereits vorhanden ist.

  • Händisches Löschen nicht möglich: Momentan gibt es keine eingebaute Möglichkeit, einen ausgewählten Eintrag manuell zu löschen, ohne die gesamte Liste zu löschen und neu einzugeben. Eine mögliche Lösung könnte darin bestehen, einen Button zu erstellen, der bei Klick die Auswahl zurücksetzt.


Alternative Methoden

Wenn du keine VBA-Programmierung verwenden möchtest, kannst du auch ein Listenfeld für Mehrfachauswahl verwenden:

  1. Gehe zu Entwicklertools > Einfügen und wähle ein Listenfeld aus.
  2. Setze die Eigenschaft MultiSelect auf fmMultiSelectMulti.
  3. Füge die gewünschten Elemente aus deiner Liste hinzu.

Diese Methode ermöglicht es dir, mehrere Einträge auszuwählen, ohne den VBA-Code zu verwenden.


Praktische Beispiele

  • Beispiel für eine Liste mit Namen: Angenommen, du möchtest mehrere Namen in einer Zelle auswählen. Erstelle eine Liste mit Namen und verwende den oben angegebenen VBA-Code.

  • Beispiel für eine Liste mit Produkten: Wenn du eine Dropdown-Liste für Produkte in einer Tabelle erstellen möchtest, gehe genauso vor und passe den Bereich entsprechend an.


Tipps für Profis

  • Dynamische Bereiche: Verwende dynamische Bereiche oder Tabellen, damit deine Dropdown-Liste automatisch aktualisiert wird, wenn du neue Daten hinzufügst.

  • Formatierung: Du kannst die Zelle so formatieren, dass sie sich von anderen abhebt, um die Benutzerfreundlichkeit zu erhöhen.

  • Filtern: Überlege, ob du eine Filterfunktion einbauen möchtest, um die Auswahl in der Dropdown-Liste zu erleichtern.


FAQ: Häufige Fragen

1. Wie kann ich eine Dropdown-Liste ohne VBA erstellen? Es gibt keine native Funktion in Excel, um eine echte Mehrfachauswahl über eine Dropdown-Liste ohne VBA zu erstellen. Du kannst jedoch ein Listenfeld verwenden.

2. Kann ich die Auswahl zurücksetzen? Ja, du kannst einen Button erstellen, der die ausgewählten Werte in der Zelle zurücksetzt, indem du einen weiteren VBA-Code hinzufügst.

3. Funktioniert das in allen Excel-Versionen? Die oben beschriebenen Methoden funktionieren in Excel 2010 und neueren Versionen. Stelle sicher, dass du die Entwickleroptionen aktiviert hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige