Turinys
Priklausomai nuo aplinkybių, jums gali prireikti išskleidžiamajame sąraše pasirinkti kelias reikšmes. Šioje pamokoje parodysime, kaip išskleidžiamajame sąraše pasirinkti kelias reikšmes. Šiame užsiėmime naudojame "Excel 2019", galite naudoti pageidaujamą versiją.
Prieš pradėdami sesiją, susipažinkime su duomenų rinkiniu, kuris yra mūsų pavyzdžių pagrindas.
Čia turime keletą kanceliarinių elementų, kuriais naudodamiesi sukursime išskleidžiamąjį sąrašą ir jame pasirinksime kelis elementus.
Atkreipkite dėmesį, kad tai yra paprastas duomenų rinkinys, kad viskas būtų paprasta. Praktiniame scenarijuje galite susidurti su daug didesniu ir sudėtingesniu duomenų rinkiniu.
Praktikos sąsiuvinis
Praktikos sąsiuvinį galite atsisiųsti iš toliau pateiktos nuorodos.
Atlikti daugkartinį pasirinkimą iš išskleidžiamojo sąrašo.xlsm
Daugkartinis pasirinkimas išskleidžiamajame sąraše
Pirmiausia reikia sukurti išskleidžiamąjį sąrašą pagal mūsų kanceliarines prekes. Sukurkime jį greitai. Nedvejodami apsilankykite straipsnyje apie išskleidžiamojo sąrašo kūrimą.
Į Duomenų patvirtinimas dialogo lange pasirinkite SĄRAŠAS duomenų tipą ir įterpkite elementų langelių intervalą.
B4:B11 yra diapazonas, kuriame yra kanceliarinių elementų. Dabar rasite išskleidžiamąjį sąrašą.
Skaityti daugiau: "Excel" išskleidžiamasis sąrašas, priklausomai nuo pasirinkimo
1. Pasirinkite kelis elementus (galima pasirinkti kelis kartus)
Įprastiniame išskleidžiamajame sąraše visada pasirenkamas vienas elementas. Čia matote, kad pasirinkome Rašiklis iš sąrašo (paveikslėlis toliau).
Dabar, jei pasirinksime kitą elementą, tarkime. Pieštukas
tada ji pakeis ankstesnę vertę. Pieštukas liks pasirinktas.
Norėdami pasirinkti kelis elementus, turime naudoti VBA kodas. Atidarykite "Microsoft Visual Basic for Applications langas (paspauskite ALT + F11 jį atidaryti).
Dabar dukart spustelėkite darbalapio pavadinimą arba numerį, kuriame išskleidžiamajame sąraše norite pasirinkti kelis elementus. Rasite to konkretaus lapo kodo langą.
Čia pateikiamas kodo langas Lapas2 mūsų darbaknygėje (šiame lape turime išskleidžiamąjį sąrašą).
Atidarius kodo langą, į jį įterpkite šį kodą
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.UndoOldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Išsaugokite kodą ir dabar pabandykite išskleidžiamajame sąraše pasirinkti reikšmes.
Pasirinkę Pieštukas , ketiname pasirinkti kitą elementą Nešiojamasis kompiuteris . Kaip matote, radome abu daiktus (paveikslėlis toliau).
Šis kodas leis mums pakartoti pasirinkimą. Tarkime, jei pasirinksime Pieštukas dar kartą,
vėl rasime elementą pasirinkimo lange.
Kodo paaiškinimas
Deklaravome dvi eilutes Senoji vertė ir Naujovė .
Matote, kad išskleidžiamąjį sąrašą sukūrėme D4 ląstelės, todėl mūsų tikslinis adresas yra D4 . Be to, dar kartą patikrinome, ar ląstelėje naudojamas duomenų patvirtinimas, ar ne, naudodami Target.SpecialCells .
Pasirinkę reikšmę, išjungėme įvykius ( Application.EnableEvents = False
), kad pokyčiai nesukeltų įvykio dar kartą. Tada įrašykite pasirinktą elementą į Naujovė .
Panaikinę pakeitimą, nustatėme vertę į Senoji vertė . Tada patikrinkite, ar Senoji vertė jei jis tuščias arba ne. Jei tuščias (reiškia, kad pasirinkta tik viena reikšmė), grąžinama Naujovė . Priešingu atveju sutraukite Senoji vertė ir Naujovė .
Prieš baigiant iš naujo nustatyti įvykį, kad prireikus galėtume pakeisti.
Skaityti daugiau: Keletas priklausomų išskleidžiamųjų sąrašų "Excel VBA
2. Iš išskleidžiamojo sąrašo pasirinkite kelis elementus (tik unikalus pasirinkimas)
Ankstesniame skyriuje matėme daugkartinius pasirinkimus, kai buvo leidžiama kartoti. Jei to nenorite, vadovaukitės šiuo skyriumi.
Patogumo dėlei šiam demonstravimui naudojome atskirą lapą. Šį kartą esame 3 lape. Šio lapo kodo lange įrašykite tokį kodą.
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Ar yra kokių nors skirtumų, palyginti su ankstesniu kodu! Pažvelkite atidžiau, galėsite pastebėti nedidelį skirtumą.
Čia mes naudojome VBA funkcija, vadinama INSTR . INSTR funkcija grąžina eilutėje esančios eilutės eilutės poaibio pirmojo pasikartojimo poziciją. Daugiau informacijos rasite šiame INSTR straipsnyje.
Naudodami šią loginę operaciją su InStr(1, Oldvalue, Newvalue) = 0, patikrinome, ar reikšmės rastos, ar ne. Jei loginė operacija grąžina TRUE (nerastas anksčiau), tada galima pasirinkti elementą ir sujungti su ankstesne reikšme.
Išsaugokite kodą ir pabandykite pasirinkti jau pasirinktą elementą.
Čia jau pasirinkome Pieštukas , jei norėsime dar kartą pasirinkti šią reikšmę, negalėsime to padaryti. Neleidžiama dubliuoti reikšmių.
Skaityti daugiau: Kaip sukurti išskleidžiamąjį sąrašą iš kito "Excel" lapo
3. Pasirinkite elementus naujoje eilutėje
Iki šiol nustatėme, kad elementai atskiriami kableliais. Šiame skyriuje pasirinktus elementus išdėstysime naujomis eilutėmis.
Kad būtų paprasčiau, sujungiame keletą langelių su D4 Norėdami tai padaryti, pasirinkite langelius, kuriuos norite sujungti, ir spustelėkite Sujungti & amp; Centras iš Suderinimas skyriuje Pagrindinis skirtukas.
Ląstelė įgaus didesnį aukštį.
Dabar pažvelkime į kodą, skirtą elementams atskirti per naująją eilutę. Naudokite šį kodą
Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Vienintelis skirtumas nuo ankstesnio kodo yra tas, kad šį kartą naudojome vbNewLine tarp jų OldValue ir NewValue .
vbNewLine tarp elementų įterpiama nauja eilutė.
Dabar pasirinkite elementus.
Pasirenkame elementą Rašiklis rodomas paveikslėlyje. Dabar pasirinkite kitą elementą.
Pamatysite, kad abu elementai yra skirtingose eilutėse.
Čia turime dvi reikšmes, kurios yra dviejose skirtingose eilutėse. Pasirinkus kitą reikšmę, ji bus įtraukta į kitą eilutę. Kiekviena reikšmė bus naujoje eilutėje.
Atkreipkite dėmesį, kad jei elementus norite atskirti kitu skiriamuoju ženklu, naudokite jį dvigubose kabutėse vietoj vbNewline .
Išvada
Šiandien tai viskas. Išvardijome keletą būdų, kaip išskleidžiamajame sąraše atlikti kelis pasirinkimus. Tikimės, kad tai jums bus naudinga. Drąsiai komentuokite, jei kas nors atrodo sunkiai suprantama. Praneškite mums apie kitus metodus, kuriuos čia praleidome.