Padajuća lista sa višestrukim odabirom

Klasična padajuća lista u Excel listu je odlična, ali vam omogućava da odaberete samo jednu opciju iz predstavljenog skupa. Ponekad je to upravo ono što želite, ali postoje situacije u kojima korisnik mora imati mogućnost da bira neki elemenata sa liste.

Pogledajmo nekoliko tipičnih implementacija takve liste sa višestrukim odabirom.

Opcija 1. Horizontalno

Korisnik bira stavke sa padajuće liste jednu po jednu, a one se pojavljuju desno od ćelije koja se menja, automatski se prikazuju horizontalno:

Padajuće liste u ćelijama C2:C5 u ovom primeru su kreirane na standardni način, tj

  1. izaberite ćelije C2:C5
  2. karticu ili meni podaci izabrati tim Provjera podataka
  3. u prozoru koji se otvori odaberite opciju Popis i navedite kao raspon izvor ćelije sa izvornim podacima za listu A1:A8

Zatim morate dodati makro u modul lista, koji će obaviti sav glavni posao, odnosno dodati odabrane vrijednosti desno od zelenih ćelija. Da biste to učinili, desnom tipkom miša kliknite karticu lista s padajućim listama i odaberite naredbu Izvorni kod. Zalijepite sljedeći kod u prozor uređivača Visual Basica koji se otvara:

Privatni pod Radni list_Change(ByVal Target As Range) Pri grešci Nastavi Sljedeći Ako nije Intersect(Target, Range("C2:C5")) Nije ništa i Target.Cells.Count = 1 Tada Application.EnableEvents = False If Len(Target.Offset (0, 1)) = 0 Zatim Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Ciljni kraj ako Target.ClearContents Application.EnableEvents = Tačan kraj ako završi pod  

Ako je potrebno, zamijenite osjetljivi raspon padajućih lista C2:C5 u drugom redu ovog koda svojim vlastitim.

Opcija 2. Vertikalna

Isto kao u prethodnoj verziji, ali nove odabrane vrijednosti se ne dodaju desno, već na dno:

To se radi na potpuno isti način, ali se kod makroa za obradu neznatno mijenja:

Privatni pod Radni list_Change(ByVal Target As Range) Pri grešci Nastavi Sljedeći Ako nije Intersect(Target, Range("C2:F2")) Nije ništa i Target.Cells.Count = 1 Tada Application.EnableEvents = False If Len(Target.Offset (1, 0)) = 0 Tada Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End Ako End Sub  

Opet, ako je potrebno, zamijenite osjetljivi raspon padajućih lista C2:F2 svojim vlastitim u drugom redu ovog koda.

Opcija 3. Sa akumulacijom u istoj ćeliji

U ovoj opciji, akumulacija se dešava u istoj ćeliji u kojoj se nalazi padajuća lista. Odabrani elementi su odvojeni bilo kojim datim znakom (na primjer, zarezom):

Padajuće liste u zelenim ćelijama kreiraju se na potpuno standardan način, kao iu prethodnim metodama. Sav posao, opet, obavlja makro u modulu lista:

Privatni pod Radni list_Change(ByVal Target As Range) Pri grešci Nastavi Sljedeći Ako nije Intersect(Target, Range("C2:C5")) Nije ništa i Target.Cells.Count = 1 Tada Application.EnableEvents = False newVal = Ciljna aplikacija.Undo oldval = Target If Len(oldval) <> 0 I oldval <> newVal Then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End Ako End Sub  

Ako želite, možete zamijeniti znak za razdvajanje (zarez) u 9. redu koda svojim vlastitim (na primjer, razmak ili tačku-zarez).

  • Kako kreirati jednostavnu padajuću listu u ćeliji Excel lista
  • Padajuća lista sa sadržajem
  • Dodana je padajuća lista sa nedostajućim opcijama
  • Šta su makroi, kako ih koristiti, gdje ubaciti makro kod u Visual Basic

Ostavite odgovor