Lista dropdown b'għażla multipla

Il-lista drop-down klassika f'folja Excel hija kbira, iżda tippermetti biss li tagħżel għażla waħda mis-sett ippreżentat. Xi drabi dan huwa eżattament dak li trid, iżda hemm sitwazzjonijiet fejn l-utent jeħtieġ li jkun jista 'jagħżel xi elementi mil-lista.

Ejja nħarsu lejn diversi implimentazzjonijiet tipiċi ta 'tali lista multi-selezzjoni.

Għażla 1. Orizzontali

L-utent jagħżel oġġetti mil-lista drop-down wieħed wieħed, u jidhru fuq il-lemin taċ-ċellula li qed tinbidel, awtomatikament jiġu elenkati orizzontalment:

Listi drop-down fiċ-ċelloli C2:C5 f'dan l-eżempju huma maħluqa b'mod standard, jiġifieri

  1. agħżel iċ-ċelloli C2:C5
  2. tab jew menu Data agħżel tim Validazzjoni tad-Dejta
  3. fit-tieqa li tiftaħ, agħżel għażla Lista u speċifika bħala firxa sors ċelluli b'dejta sors għal-lista A1:A8

Imbagħad trid iżżid makro mal-modulu tal-folja, li se tagħmel ix-xogħol ewlieni kollu, jiġifieri żżid valuri magħżula fuq il-lemin taċ-ċelloli ħodor. Biex tagħmel dan, ikklikkja bil-lemin fuq it-tab tal-folja b'listi drop-down u agħżel il-kmand Kodiċi tas-sors. Past il-kodiċi li ġej fit-tieqa tal-editur Visual Basic li tiftaħ:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Jekk Mhux Intersect(Target, Range("C2:C5")) Mhu Xejn U Target.Cells.Count = 1 Imbagħad Applikazzjoni.EnableEvents = Falza Jekk Len(Target.Offset (0, 1)) = 0 Imbagħad Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target Tmiem Jekk Target.ClearContents Application.EnableEvents = True End If End Sub  

Jekk meħtieġ, ibdel il-firxa sensittiva tal-listi drop-down C2:C5 fit-tieni linja ta 'dan il-kodiċi ma' tiegħek.

Għażla 2. Vertikali

L-istess bħal fil-verżjoni preċedenti, iżda l-valuri l-ġodda magħżula mhumiex miżjuda fuq il-lemin, iżda fil-qiegħ:

Dan isir eżattament bl-istess mod, iżda l-kodiċi makro tal-handler jinbidel ftit:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Jekk Mhux Intersect(Target, Range("C2:F2")) Mhu Xejn U Target.Cells.Count = 1 Imbagħad Applikazzjoni.EnableEvents = Falza Jekk Len(Target.Offset (1, 0)) = 0 Imbagħad Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset (1, 0) = Target Tmiem Jekk Target.ClearContents Application.EnableEvents = True End If End Sub  

Għal darb'oħra, jekk meħtieġ, ibdel il-firxa sensittiva tal-listi drop-down C2: F2 ma tiegħek fit-tieni linja ta 'dan il-kodiċi.

Għażla 3. B'akkumulazzjoni fl-istess ċellola

F'din l-għażla, l-akkumulazzjoni sseħħ fl-istess ċellula fejn tinsab il-lista drop-down. L-elementi magħżula huma separati bi kwalunkwe karattru partikolari (per eżempju, virgola):

Listi drop-down f'ċelloli ħodor huma maħluqa b'mod kompletament standard, bħal fil-metodi preċedenti. Ix-xogħol kollu jsir, għal darb'oħra, minn makro fil-modulu tal-folja:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next Jekk Mhux Intersect(Target, Range("C2:C5")) Mhu Xejn U Target.Cells.Count = 1 Imbagħad Application.EnableEvents = False newVal = Target Application.Undo oldval = Target Jekk Len(oldval) <> 0 U oldval <> newVal Imbagħad Target = Target & "," & newVal Else Target = newVal Tmiem Jekk Len(newVal) = 0 Imbagħad Target.ClearContents Application.EnableEvents = True End Jekk Tmiem Sub  

Jekk mixtieq, tista' tissostitwixxi l-karattru separatur (virgola) fid-9 linja tal-kodiċi ma' tiegħek (per eżempju, spazju jew punt u virgola).

  • Kif toħloq lista drop down sempliċi f'ċellula tal-folja ta' l-Excel
  • Lista dropdown bil-kontenut
  • Lista dropdown b'għażliet neqsin miżjuda
  • X'inhuma macros, kif tużahom, fejn daħħal il-kodiċi makro fil-Visual Basic

Ħalli Irrispondi