Išskleidžiamasis sąrašas su keliais pasirinkimais

Klasikinis išskleidžiamasis sąrašas Excel lape yra puikus, tačiau jis leidžia pasirinkti tik vieną parinktį iš pateikto rinkinio. Kartais tai yra būtent tai, ko norite, tačiau yra situacijų, kai vartotojas turi turėti galimybę pasirinkti šiek tiek elementų iš sąrašo.

Pažvelkime į keletą tipiškų tokio kelių pasirinkimų sąrašo įgyvendinimo variantų.

1 variantas. Horizontalus

Vartotojas po vieną pasirenka elementus iš išskleidžiamojo sąrašo ir jie pasirodo keičiamo langelio dešinėje, automatiškai pateikiami horizontaliai:

Išskleidžiamieji sąrašai langeliuose C2:C5 šiame pavyzdyje kuriami standartiniu būdu, t

  1. pasirinkite langelius C2:C5
  2. skirtuką arba meniu Duomenys pasirinkti komandą Duomenų tikrinimas
  3. atsidariusiame lange pasirinkite parinktį sąrašas ir nurodykite kaip diapazoną Šaltinis langeliai su šaltinio A1:A8 sąrašo duomenimis

Tada prie lapo modulio turite pridėti makrokomandą, kuri atliks visą pagrindinį darbą, ty pridės pasirinktas reikšmes žalių langelių dešinėje. Norėdami tai padaryti, dešiniuoju pelės mygtuku spustelėkite lapo skirtuką su išskleidžiamaisiais sąrašais ir pasirinkite komandą Originalus kodas. Įklijuokite šį kodą į atsidariusį Visual Basic redaktoriaus langą:

Private Sub Worksheet_Change(ByVal Target As Range) Įvykus klaidą Tęsti kitą, jei nesikerta(tikslas, diapazonas("C2:C5")) yra nieko ir tikslas.Ląstelių skaičius = 1 Tada Application.EnableEvents = Netiesa, jei Len(Target.Offset (0, 1)) = 0 Tada Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Tikslinė pabaiga, jei Target.ClearContents Application.EnableEvents = True End If End sub.  

Jei reikia, antroje šio kodo eilutėje esančių išskleidžiamųjų sąrašų C2:C5 jautrų diapazoną pakeiskite savo.

2 variantas. Vertikalus

Tas pats, kaip ir ankstesnėje versijoje, tačiau naujos pasirinktos reikšmės pridedamos ne dešinėje, o apačioje:

Tai daroma lygiai taip pat, tačiau tvarkyklės makrokodas šiek tiek pasikeičia:

Private Sub Worksheet_Change(ByVal Target As Range) Įvykus klaidą Tęsti kitą, jei nesikerta(tikslas, diapazonas("C2:F2")) yra nieko ir tikslas.Ląstelių skaičius = 1 Tada Application.EnableEvents = Netiesa, jei Len(Target.Offset (1, 0)) = 0 Tada Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Tikslinė pabaiga, jei Target.ClearContents Application.EnableEvents = Tikra pabaiga, jei pabaigos sub.  

Vėlgi, jei reikia, pakeiskite jautrų C2:F2 išskleidžiamųjų sąrašų diapazoną savo antroje šio kodo eilutėje.

3 variantas. Su kaupimu tame pačiame langelyje

Pasirinkus šią parinktį, kaupimas vyksta tame pačiame langelyje, kuriame yra išskleidžiamasis sąrašas. Pasirinkti elementai yra atskirti bet kuriuo nurodytu simboliu (pavyzdžiui, kableliu):

Išskleidžiamieji sąrašai žaliuose langeliuose sukuriami visiškai standartiniu būdu, kaip ir ankstesniuose metoduose. Visas darbas vėlgi atliekamas naudojant makrokomandą lapo modulyje:

Private Sub Worksheet_Change(ByVal Target as Range) Įvykus klaidą Tęsti kitą, jei nesikerta(tikslas, diapazonas("C2:C5")) yra nieko ir tikslas.Ląstelių skaičius = 1 Tada Application.EnableEvents = klaidingas naujasVal = tikslinė programa.Undo oldval = Tikslas Jei Len(senasis) <> 0 Ir oldval <> newVal Tada Target = Target & "," & newVal Else Target = newVal Pabaiga If If Len(newVal) = 0 Tada Target.ClearContents Application.EnableEvents = True End If Pabaigos sub  

Jei norite, galite pakeisti skiriamąjį ženklą (kablelį) 9-oje kodo eilutėje savo (pavyzdžiui, tarpu arba kabliataškiu).

  • Kaip sukurti paprastą išskleidžiamąjį sąrašą „Excel“ lapo langelyje
  • Išskleidžiamasis sąrašas su turiniu
  • Išskleidžiamasis sąrašas su pridėtomis trūkstamomis parinktimis
  • Kas yra makrokomandos, kaip jas naudoti, kur įterpti makrokomandos kodą Visual Basic

Palikti atsakymą