Dropdown Lëscht mat Multi-Select

Déi klassesch Dropdown-Lëscht an engem Excel Blat ass super, awer et erlaabt Iech nëmmen eng Optioun aus dem presentéiert Set ze wielen. Heiansdo ass dat genau wat Dir wëllt, awer et ginn Situatiounen wou de Benotzer muss kënnen wielen puer Elementer aus der Lëscht.

Loosst eis e puer typesch Implementatioune vu sou enger Multi-Select Lëscht kucken.

Optioun 1. Horizontal

De Benotzer wielt Elementer aus der Dropdown-Lëscht een nom aneren, a si schéngen riets vun der Zelle déi geännert gëtt, automatesch horizontal opgelëscht:

Dropdown-Lëschten an Zellen C2:C5 an dësem Beispill ginn op eng Standard Manéier erstallt, dh

  1. wielt Zellen C2: C5
  2. Tab oder Menü Daten wielt eng Equipe Donnéeën Validatioun
  3. an der Fënster déi opmaacht, wielt eng Optioun Lëscht a spezifizéieren als Gamme Source Zellen mat Quelldaten fir Lëscht A1:A8

Da musst Dir e Makro an de Blatmodul addéieren, deen all d'Haaptaarbecht mécht, dh ausgewielte Wäerter op der rietser Säit vun de gréngen Zellen. Fir dëst ze maachen, klickt riets op de Blat Tab mat Dropdown-Lëschten a wielt de Kommando Source Code. Paste de folgende Code an der Visual Basic Editor Fënster déi opmaacht:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset) (0, 1)) = 0 Dann Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Wann néideg, ersetzt déi sensibel Gamme vun den Dropdown-Lëschten C2: C5 an der zweeter Zeil vun dësem Code mat Ärem eegenen.

Optioun 2. Vertikal

D'selwecht wéi an der viregter Versioun, awer déi nei gewielte Wäerter ginn net op der rietser bäigefüügt, awer no ënnen:

Et gëtt op genau déiselwecht Manéier gemaach, awer den Handler Makrocode ännert liicht:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:F2")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False If Len(Target.Offset) (1, 0)) = 0 Dann Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Erëm, wann néideg, ersetzt de sensiblen Sortiment vun den C2: F2 Dropdown-Lëschte mat Ären eegenen an der zweeter Zeil vun dësem Code.

Optioun 3. Mat Akkumulation an der selwechter Zell

An dëser Optioun geschitt d'Akkumulation an der selwechter Zell wou d'Ausklapplëscht läit. Déi gewielte Elementer gi vun engem bestëmmte Charakter getrennt (zum Beispill e Komma):

Drop-down Lëschten a gréng Zellen ginn op eng komplett Standard Manéier erstallt, wéi an de fréiere Methoden. All d'Aarbecht gëtt erëm gemaach vun engem Makro am Blatmodul:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If Enn Sub  

Wann Dir wëllt, kënnt Dir de Separator Charakter (Komma) an der 9. Zeil vum Code mat Ärem eegenen ersetzen (zum Beispill e Raum oder e Semikolon).

  • Wéi erstellen ech eng einfach Dropdown-Lëscht an enger Excel-Blattzell
  • Dropdown Lëscht mat Inhalt
  • Dropdown Lëscht mat vermësst Optiounen dobäi
  • Wat sinn Makroen, wéi se se benotzen, wou Dir Makrocode an Visual Basic setzt

Hannerlooss eng Äntwert