Padajući popis s višestrukim odabirom

Klasični padajući popis u Excel listu je odličan, ali vam omogućuje 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 izbora neki elemenata s popisa.

Pogledajmo nekoliko tipičnih implementacija takvog popisa s višestrukim odabirom.

Opcija 1. Vodoravno

Korisnik odabire stavke s padajućeg popisa jednu po jednu i one se pojavljuju s desne strane ćelije koja se mijenja, automatski se prikazuju vodoravno:

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

  1. odaberite ćelije C2:C5
  2. karticu ili izbornik Datum izabrati tim Provjera valjanosti podataka
  3. u prozoru koji se otvori odaberite opciju Popis i odredite kao raspon izvor ćelije s izvornim podacima za popis A1:A8

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

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 Then Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

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

Opcija 2. Okomito

Isto kao u prethodnoj verziji, ali nove odabrane vrijednosti nisu dodane desno, već na dno:

To se radi na potpuno isti način, ali se kod makronaredbe rukovatelja malo mijenja:

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 Then Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

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

Opcija 3. S akumulacijom u istoj ćeliji

U ovoj se opciji akumulacija događa u istoj ćeliji u kojoj se nalazi padajući popis. Odabrani elementi odvojeni su bilo kojim znakom (na primjer, zarezom):

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

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 Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If End Sub  

Ako želite, možete zamijeniti znak razdjelnika (zarez) u 9. retku koda vlastitim (na primjer, razmak ili točka-zarez).

  • Kako stvoriti jednostavan padajući popis u ćeliji lista programa Excel
  • Padajući popis sa sadržajem
  • Padajući popis s dodanim opcijama koje nedostaju
  • Što su makronaredbe, kako ih koristiti, gdje umetnuti makro kod u Visual Basicu

Ostavi odgovor