Spustni seznam z možnostjo več izbir

Klasični spustni seznam v Excelovem listu je odličen, vendar vam omogoča, da izberete samo eno možnost iz predstavljenega nabora. Včasih je to točno tisto, kar želite, vendar obstajajo situacije, ko mora imeti uporabnik možnost izbire nekaj elemente s seznama.

Oglejmo si nekaj tipičnih izvedb takšnega seznama z več izbirami.

Možnost 1. Vodoravno

Uporabnik enega za drugim izbere elemente s spustnega seznama in se prikažejo desno od celice, ki se spreminja, in so samodejno navedeni vodoravno:

Spustni seznami v celicah C2:C5 v tem primeru so ustvarjeni na standarden način, tj

  1. izberite celice C2:C5
  2. zavihek ali meni datum izberite ekipo Preverjanje podatkov
  3. v oknu, ki se odpre, izberite možnost Seznam in določite kot obseg vir celice z izvornimi podatki za seznam A1:A8

Nato morate modulu lista dodati makro, ki bo opravil vse glavno delo, tj. dodal izbrane vrednosti desno od zelenih celic. Če želite to narediti, z desno tipko miške kliknite zavihek lista s spustnimi seznami in izberite ukaz Izvorna koda. Prilepite naslednjo kodo v okno urejevalnika Visual Basic, ki se odpre:

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

Po potrebi zamenjajte občutljiv obseg spustnih seznamov C2:C5 v drugi vrstici te kode s svojim.

Možnost 2. Navpično

Enako kot v prejšnji različici, vendar nove izbrane vrednosti niso dodane na desno, ampak na dno:

To se naredi na povsem enak način, vendar se koda makra upravljalnika nekoliko spremeni:

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

Če je potrebno, zamenjajte občutljiv obseg spustnih seznamov C2:F2 s svojim v drugi vrstici te kode.

Možnost 3. Z akumulacijo v isti celici

Pri tej možnosti pride do kopičenja v isti celici, kjer se nahaja spustni seznam. Izbrani elementi so ločeni s poljubnim znakom (na primer z vejico):

Spustni seznami v zelenih celicah so ustvarjeni na povsem standarden način, kot v prejšnjih metodah. Vse delo spet opravi makro v 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  

Po želji lahko ločilni znak (vejico) v 9. vrstici kode zamenjate s svojim (na primer presledek ali podpičje).

  • Kako ustvariti preprost spustni seznam v celici lista Excel
  • Spustni seznam z vsebino
  • Spustni seznam z dodanimi manjkajočimi možnostmi
  • Kaj so makri, kako jih uporabljati, kam vstaviti kodo makra v Visual Basicu

Pustite Odgovori