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
- odaberite ćelije C2:C5
- karticu ili izbornik Datum izabrati tim Provjera valjanosti podataka
- 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