Válasszon több elemet az Excel legördülő listájából

Az egyik kollégám megkérdezte tőlem, hogy lehetséges-e több kijelölés az Excel legördülő listájában.

Amikor létrehoz egy legördülő listát, csak egy választást végezhet. Ha másik elemet választ, az első helyére az új kijelölés kerül.

Több kijelölést akart végrehajtani ugyanabból a legördülő menüből oly módon, hogy a kijelölések hozzáadódjanak a cellában már jelen lévő értékhez.

Valami, ami az alábbi képen látható:

Ezt semmilyen módon nem teheti meg az Excel beépített funkcióival.

Az egyetlen módja egy VBA kód használata, amely mindig fut, amikor kiválaszt, és hozzáadja a kiválasztott értéket a meglévő értékhez.

Videó megtekintése - Hogyan válasszunk ki több elemet az Excel legördülő listából

Hogyan lehet többször kiválasztani a legördülő listát

Ebben az oktatóanyagban megmutatom, hogyan lehet többször kiválasztani az Excel legördülő listában (ismétléssel és ismétlés nélkül).

Ez volt az egyik legnépszerűbb Excel oktatóanyag ezen az oldalon. Mivel sok hasonló kérdést kapok, úgy döntöttem, hogy létrehozok egy GYIK részt az oktatóanyag végén. Tehát, ha bármilyen kérdése van az olvasás után, először nézze meg a GYIK részt.

A legördülő lista több részből álló listájának létrehozásához két részből áll:

  • A legördülő lista létrehozása.
  • A VBA kód hozzáadása a háttérhez.

A legördülő lista létrehozása Excelben

Az alábbi lépésekkel hozhat létre egy legördülő listát az Excelben:

  1. Válassza ki azt a cellát vagy cellatartományt, ahol a legördülő listát szeretné megjeleníteni (ebben a példában C2).
  2. Lépjen az Adatok -> Adateszközök -> Adatellenőrzés menüpontra.
  3. Az Adatok érvényesítése párbeszédpanelen, a beállítások lapon válassza a „Lista” lehetőséget érvényesítési kritériumként.
  4. A Forrás mezőben válassza ki azokat a cellákat, amelyek legördülő menüjében a kívánt elemeket tartalmazza.
  5. Kattintson az OK gombra.

Most a C2 cella egy legördülő listával rendelkezik, amely az A2: A6 elemek neveit mutatja.

Jelenleg van egy legördülő listánk, ahol egyszerre kiválaszthat egy elemet (az alábbiak szerint).

Ahhoz, hogy ez a legördülő menü lehetővé tegye több kiválasztás elvégzését, hozzá kell adnunk a VBA kódot a hátsó részhez.

Ennek az oktatóanyagnak a következő két szakasza megadja a VBA kódot, amely lehetővé teszi a többszörös kiválasztást a legördülő listában (ismétléssel és anélkül).

VBA kód, amely lehetővé teszi több kiválasztást a legördülő listában (ismétléssel)

Az alábbiakban bemutatjuk az Excel VBA kódot, amely lehetővé teszi számunkra, hogy egynél több elemet válasszunk a legördülő listából (lehetővé téve az ismétléseket a kiválasztásban):

Private Sub Worksheet_Change (ByVal Target as Range) 'Code by Sumit Bansal from https://trumpexcel.com' Mutliple kijelölések elvégzése az Excel legördülő listájában = "$ C $ 2" Akkor Ha a Target.SpecialCells (xlCellTypeAllValidation) semmi, akkor GoTo Exitsub Else: If Target.Value = "" Akkor 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 End End End Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Most be kell helyeznie ezt a kódot egy modulba a VB Editorban (ahogy az alább látható, a „Hol kell elhelyezni a VBA -kódot” részben).

Ha elhelyezte ezt a kódot a háttérben (az oktatóanyag későbbi részében tárgyaljuk), ez lehetővé teszi, hogy több választást végezzen a legördülő menüben (az alábbiak szerint).

Ne feledje, hogy ha többször kiválaszt egy elemet, akkor újra be kell írnia (az ismétlés megengedett).

Próbálja ki maga … Töltse le a példafájlt

A VBA kód lehetővé teszi több kiválasztást a legördülő listában (ismétlés nélkül)

Sokan kérdezték a kódról, hogy több elemet válasszanak ki a legördülő listából ismétlés nélkül.

Íme a kód, amely biztosítja, hogy az elem csak egyszer legyen kiválasztható, hogy ne legyen ismétlés:

Private Sub Worksheet_Change (ByVal Target As Range) 'Code by Sumit Bansal from https://trumpexcel.com' Többszöri kijelölés engedélyezése az Excel legördülő listájában (ismétlés nélkül) Dim Oldvalue Mint String Dim Newvalue mint String Application. True On Error GoTo Exitsub If Target.Address = "$ C $ 2" Then If Target.SpecialCells (xlCellTypeAllValidation) is nothing then GoTo Exitsub Else: If Target.Value = "" then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target. Érték 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 = Oldvalue End Ha vége Vége Ha Vége Ha vége Ha Alkalmazás. EnableEvents = True Exitsub: Application.EnableEvents = True End Sub

Most be kell helyeznie ezt a kódot egy modulba a VB Editorban (ahogy ez az oktatóanyag következő szakaszában látható).

Ez a kód lehetővé teszi több elem kiválasztását a legördülő listából. Egy elemet azonban csak egyszer választhat ki. Ha újra megpróbálja kiválasztani, semmi sem fog történni (ahogy az alább látható).

Próbálja ki maga … Töltse le a példafájlt

Hová tegye a VBA kódot

Mielőtt elkezdené használni ezt a kódot az Excel-ben, be kell helyeznie a háttérbe, hogy aktiválódjon, amikor bármilyen változás történik a legördülő menüben.

Kövesse az alábbi lépéseket, hogy a VBA -kódot az Excel hátsó rendszerébe helyezze:

  1. Lépjen a Fejlesztő fülre, és kattintson a Visual Basic elemre (használhatja a billentyűparancsot is - Alt + F11). Ezzel megnyílik a Visual Basic Editor.
  2. A bal oldalon egy Project Explorer ablaktáblának kell lennie (ha nincs, használja a Control + R billentyűkombinációt, hogy láthatóvá váljon).
  3. Kattintson duplán a munkalap nevére (a bal oldali ablaktáblában), ahol a legördülő lista található. Ez megnyitja az adott munkalap kódablakát.
  4. A kódablakban másolja ki és illessze be a fenti kódot.
  5. Zárja be a VB szerkesztőt.

Most, amikor visszatér a legördülő menübe, és kiválasztja, lehetővé teszi több kiválasztás elvégzését (az alábbiak szerint):

Próbálja ki maga … Töltse le a példafájlt

Jegyzet: Mivel ehhez VBA kódot használunk, a munkafüzetet .xls vagy .xlsm kiterjesztéssel kell mentenie.

Gyakran ismételt kérdések (GYIK)

Ezt a részt azért hoztam létre, hogy válaszoljak az oktatóanyaggal és a VBA kóddal kapcsolatos leggyakrabban feltett kérdésekre. Ha bármilyen kérdése van, kérem, hogy először nézze át ezt a listát.

K: A VBA kódban a funkció csak a C2 cellára vonatkozik. Hogyan juthatok hozzá más sejtekhez? Válasz: Ha ezt a többszörös kijelölés legördülő menüt más cellákban szeretné megjeleníteni, módosítania kell a VBA kódot a háttérben. Tegyük fel, hogy ezt C2, C3 és C4 esetén szeretné megkapni, le kell cserélnie a kód következő sorát: If Target.Address = "$ C $ 2" Ezután ezzel a sorral: If Target.Address = "$ C $ 2" Vagy Target.Address = "$ C $ 3" ​​Vagy Target.Address = "$ C $ 4" Akkor
K: Több legördülő menüt kell létrehoznom a teljes „C” oszlopban. Hogyan érhetem el ezt az oszlopok összes cellájához több kijelöléses funkcióval? Válasz: Ha több kijelölést szeretne engedélyezni a legördülő listákban egy teljes oszlopban, cserélje ki a kód következő sorát: If Target.Address = "$ C $ 2" Ezután ezzel a sorral: If Target.Column = 3 Majd Hasonló sorokon, ha ezt a funkciót a C és D oszlopban szeretné használni, használja az alábbi sort: If Target.Column = 3 vagy Target.Column = 4 then
K: Több legördülő menüt kell létrehoznom egymás után. Hogyan tudom ezt megtenni? Válasz: Ha egy legördülő listát kell létrehoznia több kijelöléssel egy sorban (mondjuk a második sort), akkor le kell cserélnie az alábbi kódsorot: If Target.Address = "$ C $ 2" Ezután ezzel a sorral: Ha Target.Row = 2 Majd Hasonlóképpen, ha azt szeretné, hogy ez több sor esetén is működjön (mondjuk a második és a harmadik sor), akkor használja az alábbi kódsorot: If Target.Row = 2 vagy Target.Row = 3 then
K: Mostantól a több kijelölést vessző választja el egymástól. Hogyan tudom ezt megváltoztatni, hogy ezeket szóközzel (vagy bármilyen más elválasztóval) elválasszuk? Válasz: Ha ezeket nem vesszővel kell elválasztani, ki kell cserélnie a VBA -kód következő sorát: Target.Value = Oldvalue & "," & Newvalue a VBA -kód sorával: Target.Value = Oldvalue & "" & Newvalue Hasonlóképpen, ha a vesszőt más karakterrel szeretné megváltoztatni, például |, akkor a következő kódsor használható: Target.Value = Oldvalue & "|" & Newvalue
K: Kaphatom -e az egyes kijelöléseket ugyanabban a cellában egy külön sorban? Válasz: Igen, lehet. Ennek eléréséhez ki kell cserélnie a VBA -kód alábbi sorát: Target.Value = Oldvalue & "," & Newvalue a következő kódsorral: Target.Value = Oldvalue & vbNewLine & Newvalue A vbNewLine új sort szúr be ugyanabba a cellába . Tehát amikor kiválaszt egy választást a legördülő menüből, az új sorba kerül.
K: Működtethetem a többszörös kiválasztási funkciót egy védett lapon? Válasz: Igen, lehet. Ennek elvégzéséhez két dolgot kell tennie: Adja hozzá a következő sort a kódhoz (közvetlenül a DIM utasítás után): Me.Protect UserInterfaceOnly: = Igaz Másodszor, meg kell győződnie arról, hogy a cellák - amelyeknek a legördülő listája több kijelölési funkcióval rendelkezik - nincsenek lezárva, amikor védi a teljes lapot. Itt van egy oktatóanyag, hogyan kell ezt megtenni: Zárolja a cellákat az Excelben 
wave wave wave wave wave