„Excel“ išskleidžiamajame sąraše pasirinkite kelis elementus

Vienas iš mano kolegų manęs paklausė, ar galima „Excel“ išskleidžiamajame sąraše atlikti kelis pasirinkimus.

Kurdami išskleidžiamąjį sąrašą, galite pasirinkti tik vieną. Jei pasirinksite kitą elementą, pirmasis bus pakeistas nauju.

Jis norėjo atlikti kelis pasirinkimus iš to paties išskleidžiamojo meniu taip, kad pasirinkimai būtų pridėti prie jau esamos langelio vertės.

Kažkas, kaip parodyta paveikslėlyje žemiau:

Negalite to padaryti naudodami „Excel“ integruotas funkcijas.

Vienintelis būdas yra naudoti VBA kodą, kuris paleidžiamas kiekvieną kartą pasirenkant ir prideda pasirinktą reikšmę prie esamos vertės.

Žiūrėkite vaizdo įrašą - kaip pasirinkti kelis elementus iš „Excel“ išskleidžiamojo sąrašo

Kaip padaryti kelis pasirinkimus išskleidžiamajame sąraše

Šioje pamokoje parodysiu, kaip „Excel“ išskleidžiamajame sąraše atlikti kelis pasirinkimus (kartojant ir nesikartojant).

Tai buvo viena iš populiariausių „Excel“ pamokų šioje svetainėje. Kadangi sulaukiu daug panašių klausimų, šios pamokos pabaigoje nusprendžiau sukurti DUK skyrių. Taigi, jei perskaitę šį klausimą turite klausimų, pirmiausia perskaitykite DUK skiltį.

Išskleidžiamąjį sąrašą, kuriame galima atlikti kelis pasirinkimus, sudaro dvi dalys:

  • Išskleidžiamojo sąrašo kūrimas.
  • VBA kodo pridėjimas prie užpakalinės dalies.

Išskleidžiamojo sąrašo kūrimas „Excel“

Štai „Excel“ išskleidžiamojo sąrašo kūrimo veiksmai:

  1. Pasirinkite langelį arba langelių diapazoną, kuriame norite rodyti išskleidžiamąjį sąrašą (šiame pavyzdyje C2).
  2. Eikite į Duomenys -> Duomenų įrankiai -> Duomenų patvirtinimas.
  3. Dialogo lange Duomenų patvirtinimas nustatymų skirtuko lape pasirinkite „Sąrašas“ kaip patvirtinimo kriterijus.
  4. Lauke Šaltinis pasirinkite langelius, kurių išskleidžiamajame meniu yra norimi elementai.
  5. Spustelėkite Gerai.

Dabar langelyje C2 yra išskleidžiamasis sąrašas, kuriame rodomi elementų pavadinimai A2: A6.

Šiuo metu turime išskleidžiamąjį sąrašą, kuriame galite pasirinkti vieną elementą vienu metu (kaip parodyta žemiau).

Norėdami įgalinti šį išskleidžiamąjį meniu, kad galėtume atlikti kelis pasirinkimus, galinėje dalyje turime pridėti VBA kodą.

Kiti du šios pamokos skyriai suteiks jums VBA kodą, leidžiantį kelis pasirinkimus išskleidžiamajame sąraše (su pasikartojimu ir be jo).

VBA kodas, leidžiantis kelis pasirinkimus išskleidžiamajame sąraše (kartojant)

Žemiau yra „Excel“ VBA kodas, kuris leis mums pasirinkti daugiau nei vieną elementą iš išskleidžiamojo sąrašo (leidžiant pakartoti pasirinkimą):

„Private Sub Worksheet_Change“ („ByVal Target As Range“) „Sumit Bansal“ kodas iš https://trumpexcel.com “„ Excel “išskleidžiamajame sąraše„ Dim Dim Oldvalue “kaip eilutės„ Dim Newvalue “kaip eilutė klaidos klavišu„ GoTo Exitsub If Target “. Adresas = "$ C $ 2" Tada, jei Target.SpecialCells (xlCellTypeAllValidation) yra niekas, tada GoTo Exitsub Else: If Target.Value = "" Tada 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 Jei End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Dabar šį kodą turite įdėti į modulį VB redaktoriuje (kaip parodyta žemiau skyriuje „Kur įdėti VBA kodą“).

Įdėję šį kodą į užpakalinę programą (aptarta vėliau šiame vadove), išskleidžiamajame meniu galėsite pasirinkti kelis kartus (kaip parodyta žemiau).

Atminkite, kad pasirinkus elementą daugiau nei vieną kartą, jis bus įvestas dar kartą (leidžiama kartoti).

Išbandykite patys … Atsisiųskite pavyzdinį failą

VBA kodas, leidžiantis kelis pasirinkimus išskleidžiamajame sąraše (be pasikartojimo)

Daugelis žmonių klausė apie kodą, kad būtų galima pasirinkti kelis elementus iš išskleidžiamojo sąrašo be pasikartojimo.

Čia yra kodas, kuris užtikrins, kad elementą būtų galima pasirinkti tik vieną kartą, kad nebūtų pasikartojimų:

„Private Sub Worksheet_Change“ („ByVal Target As Range“) „Sumit Bansal“ kodas iš https://trumpexcel.com “Norėdami leisti kelis pasirinkimus išskleidžiamajame„ Excel “sąraše (be pasikartojimo) Dim Oldvalue kaip String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$ C $ 2" Then If Target.SpecialCells (xlCellTypeAllValidation) is Nothing GoTo Exitsub Else: If Target.Value = "" Tada GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target. Reikšmė Application.Undo Oldvalue = Target.Value If Oldvalue = "" Tada Target.Value = Newvalue Else If InStr (1, Oldvalue, Newvalue) = 0 Tada Target.Value = Oldvalue & "," & Newvalue Else: Target.Value = Senos vertės pabaiga Jei pabaiga Jei pabaiga Jei pabaiga Jei programa. EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

Dabar šį kodą turite įdėti į modulį VB redaktoriuje (kaip parodyta kitame šios pamokos skyriuje).

Šis kodas leis jums pasirinkti kelis elementus iš išskleidžiamojo sąrašo. Tačiau elementą galėsite pasirinkti tik vieną kartą. Jei bandysite jį pasirinkti dar kartą, nieko neįvyks (kaip parodyta žemiau).

Išbandykite patys … Atsisiųskite pavyzdinį failą

Kur įdėti VBA kodą

Prieš pradėdami naudoti šį kodą „Excel“, turite įdėti jį į galinę dalį, kad ji būtų suaktyvinta, kai tik pasikeičia išskleidžiamasis meniu.

Norėdami įdėti VBA kodą į „Excel“ užpakalinę dalį, atlikite šiuos veiksmus:

  1. Eikite į skirtuką „Kūrėjas“ ir spustelėkite „Visual Basic“ (taip pat galite naudoti sparčiuosius klavišus - Alt + F11). Bus atidarytas „Visual Basic“ redaktorius.
  2. Kairėje turėtų būti „Project Explorer“ sritis (jei jos nėra, naudokite „Control + R“, kad ji būtų matoma).
  3. Dukart spustelėkite darbalapio pavadinimą (kairėje srityje), kur yra išskleidžiamasis sąrašas. Tai atveria to darbalapio kodo langą.
  4. Kodo lange nukopijuokite ir įklijuokite aukščiau esantį kodą.
  5. Uždarykite VB redaktorių.

Dabar, kai grįšite į išskleidžiamąjį meniu ir atliksite pasirinkimus, tai leis jums pasirinkti kelis kartus (kaip parodyta žemiau):

Išbandykite patys … Atsisiųskite pavyzdinį failą

Pastaba: Kadangi tam naudojame VBA kodą, turite įrašyti darbaknygę su plėtiniu .xls arba .xlsm.

Dažnai užduodami klausimai (DUK)

Sukūriau šį skyrių, norėdamas atsakyti į dažniausiai užduodamus klausimus apie šią mokymo programą ir VBA kodą. Jei turite klausimų, prašau pirmiausia peržiūrėti šį užklausų sąrašą.

Kl.: VBA kodo funkcijos skirtos tik langeliui C2. Kaip jį gauti kitoms ląstelėms? Atsakymas: Norėdami gauti šį kelių pasirinkimų išskleidžiamąjį meniu kitose ląstelėse, turite pakeisti VBA kodą vidinėje sistemoje. Tarkime, kad norite tai gauti C2, C3 ir C4, turite pakeisti šią kodo eilutę: If Target.Address = "$ C $ 2" Tada su šia eilute: If Target.Address = "$ C $ 2" Arba Target.Address = "$ C $ 3" ​​Arba Target.Address = "$ C $ 4" Tada
Kl.: Man reikia sukurti kelis išskleidžiamuosius sąrašus visame stulpelyje „C“. Kaip tai gauti visoms stulpelių ląstelėms, turinčioms kelių pasirinkimų funkciją? Atsakymas: Jei norite įjungti kelis pasirinkimus viso stulpelio išskleidžiamuosiuose meniu, pakeiskite šią kodo eilutę: If Target.Address = "$ C $ 2" Tada šia eilute: If Target.Column = 3 Tada Panašiose eilutėse, jei jei norite šios funkcijos C ir D stulpeliuose, naudokite žemiau esančią eilutę: If Target.Column = 3 arba Target.Column = 4 Tada
Kl.: Man reikia sukurti kelis išskleidžiamuosius meniu iš eilės. Kaip tai padaryti? Ats .: Jei jums reikia sukurti išskleidžiamuosius sąrašus su keliais pasirinkimais iš eilės (tarkime, antroji eilutė), turite pakeisti žemiau esančią kodo eilutę: If Target.Address = "$ C $ 2" Tada su šia eilute: Jei Target.Row = 2 Tada Panašiai, jei norite, kad tai veiktų keliose eilutėse (tarkime, antroji ir trečioji eilutės), vietoj to naudokite žemiau esančią kodo eilutę: If Target.Row = 2 arba Target.Row = 3 Tada
Klausimas: Nuo šiol keli pasirinkimai yra atskirti kableliu. Kaip tai pakeisti, kad būtų atskirti tarpai (ar bet kuris kitas skyriklis). Atsakymas: Jei norite atskirti juos nuo kablelio, turite atskirti šią eilutę: Target.Value = Oldvalue & "," & Newvalue su šia VBA kodo eilute: Target.Value = Oldvalue & "" & Newvalue Panašiai, jei norite pakeisti kablelį kitu simboliu, pvz., |, Galite naudoti šią kodo eilutę: Target.Value = Oldvalue & "|" & Newvalue
Kl.: Ar galiu kiekvieną pasirinkimą gauti atskiroje eilutėje toje pačioje ląstelėje? A: Taip, galite. Norėdami tai padaryti, turite pakeisti žemiau esančią VBA kodo eilutę: Target.Value = Oldvalue & "," & Newvalue su šia kodo eilute: Target.Value = Oldvalue & vbNewLine & Newvalue vbNewLine įterpia naują eilutę į tą patį langelį . Taigi, kai pasirenkate iš išskleidžiamojo meniu, jis bus įterptas į naują eilutę.
Kl.: Ar galiu padaryti, kad kelių pasirinkimų funkcijos veiktų apsaugotame lape? A: Taip, galite. Norėdami tai padaryti, turite atlikti du veiksmus: pridėkite šią kodo eilutę (iškart po DIM sakinio): Me.Protect UserInterfaceOnly: = Tiesa Antra, jūs turite įsitikinti, kad langeliai, turintys išskleidžiamąjį meniu su kelių pasirinkimų funkcijomis, nėra užrakinti, kai apsaugote visą lapą. Čia yra pamoka, kaip tai padaryti: Užrakinti langelius „Excel“ 
wave wave wave wave wave