Üks mu kolleeg küsis minult, kas Exceli ripploendis on võimalik teha mitu valikut.
Kui loote ripploendi, saate teha ainult ühe valiku. Kui valite teise üksuse, asendatakse esimene uuega.
Ta soovis teha samast rippmenüüst mitu valikut nii, et valikud lisatakse lahtris juba olemasolevale väärtusele.
Midagi, nagu pildil allpool näidatud:
Te ei saa seda kuidagi teha Exceli sisseehitatud funktsioonidega.
Ainus võimalus on kasutada VBA -koodi, mis käivitub iga kord, kui valite, ja lisab valitud väärtuse olemasolevale väärtusele.
Vaadake videot - kuidas valida Exceli ripploendist mitu üksust
Kuidas teha rippmenüüst mitu valikut
Selles õpetuses näitan teile, kuidas teha Exceli ripploendis mitu valikut (kordusega ja ilma korduseta).
See on olnud sellel saidil üks populaarsemaid Exceli õpetusi. Kuna ma saan palju sarnaseid küsimusi, otsustasin selle õpetuse lõpus luua KKK jaotise. Nii et kui teil on pärast selle lugemist küsimusi, vaadake kõigepealt KKK jaotist.Ripploendi koostamiseks, mis võimaldab mitut valikut, on kaks osa:
- Ripploendi koostamine.
- VBA koodi lisamine tagaküljele.
Excelis ripploendi loomine
Excelis ripploendi loomiseks toimige järgmiselt.
- Valige lahter või lahtrivahemik, kuhu soovite ripploendi kuvada (selles näites C2).
- Avage Andmed -> Andmetööriistad -> Andmete valideerimine.
- Valige dialoogiboksis Andmete valideerimine seadete vahekaardil valideerimiskriteeriumid „Loend”.
- Valige väljal Allikas lahtrid, mille rippmenüüst leiate soovitud üksused.
- Klõpsake nuppu OK.
Nüüd on lahtril C2 ripploend, mis näitab üksuste nimesid lahtris A2: A6.
Praeguse seisuga on meil ripploend, kus saate valida ühe üksuse korraga (nagu allpool näidatud).
Selle rippmenüü lubamiseks, et saaksime teha mitu valikut, peame tagaküljele lisama VBA-koodi.
Selle õpetuse järgmised kaks jaotist annavad teile VBA-koodi, mis võimaldab ripploendis mitut valikut (kordusega ja ilma).
VBA-kood, mis võimaldab ripploendis mitut valikut (kordusega)
Allpool on Exceli VBA-kood, mis võimaldab meil ripploendist valida rohkem kui ühe üksuse (lubades valimisel kordusi):
Privaatne alamlehe_muutmine (ByVal -sihtmärgi vahemik) 'Sumit Bansali kood saidilt https://trumpexcel.com' = "$ C $ 2" Siis Kui If Target.SpecialCells (xlCellTypeAllValidation) is nothing then GoTo Exitsub Else: If Target.Value = "" then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & "," & Newvalue End If End Kui End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Nüüd peate selle koodi paigutama VB Editori moodulisse (nagu on näidatud allpool jaotises „Kuhu VBA -kood panna”).
Kui olete selle koodi taustaprogrammi paigutanud (seda õpetust käsitletakse hiljem), võimaldab see teil rippmenüüs teha mitu valikut (nagu allpool näidatud).
Pange tähele, et kui valite üksuse mitu korda, sisestatakse see uuesti (kordamine on lubatud).
Proovige ise… Laadige alla näidisfail
VBA-kood, mis võimaldab ripploendis mitu valikut (ilma korduseta)
Paljud inimesed on küsinud koodi kohta, et valida ripploendist mitu üksust ilma kordusteta.
Siin on kood, mis tagab, et üksust saab valida ainult üks kord, nii et kordusi poleks:
Privaatne alamlehe_muutmine (ByVal -sihtmärgi vahemik) 'Sumit Bansali kood saidilt https://trumpexcel.com' Exceli rippmenüüst mitme valiku lubamiseks (ilma korduseta) Dim Oldvalue stringina Dim Newvalue stringina. EnableEvents = True On Error GoTo Exitsub If Target.Address = "$ C $ 2" Then If Target.SpecialCells (xlCellTypeAllValidation) is Nothing GoTo Exitsub Else: If Target.Value = "" then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target. Väärtus Application.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 = Vana väärtuse lõpp Kui lõpp Kui lõpp Kui lõpp siis kui rakendus. EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Nüüd peate selle koodi paigutama VB Editori moodulisse (nagu on näidatud selle õpetuse järgmises osas).
See kood võimaldab teil ripploendist valida mitu üksust. Siiski saate objekti valida ainult üks kord. Kui proovite seda uuesti valida, ei juhtu midagi (nagu allpool näidatud).
Proovige ise … Laadige alla näidisfail
Kuhu panna VBA kood
Enne kui hakkate seda koodi Excelis kasutama, peate selle tagaküljele panema, nii et see vallandatakse iga kord, kui rippmenüüs muudetakse.
VBA -koodi Exceli taustaprogrammi lisamiseks järgige alltoodud samme.
- Minge vahekaardile Arendaja ja klõpsake Visual Basic (saate kasutada ka kiirklahvi - Alt + F11). See avab Visual Basic Editori.
- Vasakul peaks olema Project Exploreri paan (kui seda pole, kasutage selle nähtavaks muutmiseks klahvikombinatsiooni Control + R).
- Topeltklõpsake töölehe nime (vasakul paanil), kus asub ripploend. See avab selle töölehe koodiakna.
- Koodiaknas kopeerige ja kleepige ülaltoodud kood.
- Sulgege VB redaktor.
Nüüd, kui naasete rippmenüüsse ja teete valikuid, võimaldab see teil teha mitu valikut (nagu allpool näidatud):
Proovige ise… Laadige alla näidisfail
Märge: Kuna me kasutame selle tegemiseks VBA -koodi, peate töövihiku salvestama laiendiga .xls või .xlsm.
Korduma kippuvad küsimused (KKK)
Olen selle jaotise loonud, et vastata mõnedele selle õpetuse ja VBA -koodi kohta enim küsitud küsimustele. Kui teil on küsimusi, palun teil kõigepealt see päringute loend läbi vaadata.
K: VBA -koodis on funktsionaalsus ainult lahtri C2 jaoks. Kuidas seda teistele rakkudele saada? V: Selle mitme valiku rippmenüü saamiseks teistesse lahtritesse peate muutma taustaprogrammi VBA-koodi. Oletame, et soovite seda saada C2, C3 ja C4 jaoks, peate koodis asendama järgmise rea: If Target.Address = "$ C $ 2" Seejärel selle reaga: If Target.Address = "$ C $ 2" Või Target.Address = "$ C $ 3" Või Target.Address = "$ C $ 4" Siis
K: Pean looma mitu rippmenüüd kogu veergu „C”. Kuidas seda mitme valikuga funktsionaalsusega veergude lahtrite jaoks saada? Vastus: terve veeru rippmenüüst mitme valiku lubamiseks asendage koodis järgmine rida: If Target.Address = "$ C $ 2" Seejärel selle reaga: If Target.Column = 3 Siis Sarnastel ridadel, kui kui soovite seda funktsiooni veergudes C ja D, kasutage allolevat rida: If Target.Column = 3 või Target.Column = 4 Seejärel
K: Pean looma mitu rippmenüüd järjest. Kuidas seda teha? Vastus: Kui teil on vaja ripploendeid luua mitme valikuga järjest (oletame, et teine rida), peate asendama alloleva koodirida: If Target.Address = "$ C $ 2" Seejärel selle reaga: Kui Target.Row = 2 Siis Samamoodi, kui soovite, et see toimiks mitme rea puhul (oletame, et teine ja kolmas rida), kasutage selle asemel allolevat koodirida: If Target.Row = 2 või Target.Row = 3 Siis
K: Praeguse seisuga on mitu valikut eraldatud komaga. Kuidas seda muuta, et eraldada need tühikuga (või mõne muu eraldajaga). V: Nende eraldamiseks eraldajaga, mis ei ole komaga, peate asendama järgmise VBA -koodi rea: Target.Value = Oldvalue & "," & Newvalue selle VBA -koodi reaga: Target.Value = Oldvalue & "" & Newvalue Samamoodi, kui soovite muuta koma mõne muu märgiga, näiteks |, võite kasutada järgmist koodirida: Target.Value = Oldvalue & "|" & Newvalue
K: Kas ma saan iga valiku samas lahtris eraldi reale? V: Jah, saate. Selle saamiseks peate asendama alloleva VBA -koodi rea: Target.Value = Oldvalue & "," & Newvalue selle koodireaga: Target.Value = Oldvalue & vbNewLine & Newvalue vbNewLine lisab samasse lahtrisse uue rea . Nii et kui teete rippmenüüst valiku, sisestatakse see uuele reale.
K: Kas ma saan panna mitme valiku funktsionaalsuse tööle kaitstud lehel? V: Jah, saate. Selle tegemiseks peate tegema kahte asja: lisage koodile järgmine rida (kohe pärast DIM -avaldust): Me.Protect UserInterfaceOnly: = Tõsi Teiseks peate veenduma, et lahtrid, millel on rippmenüü koos mitme valikuga, pole kogu lehe kaitsmisel lukustatud. Siin on õpetus, kuidas seda teha: Rakkude lukustamine Excelis