Note: The other languages of the website are Google-translated. Back to English

Hur skapar jag rullgardinslista med flera kryssrutor i Excel?

Många Excel-användare tenderar att skapa rullgardinslista med flera kryssrutor för att välja flera objekt från listan per gång. Du kan faktiskt inte skapa en lista med flera kryssrutor med datavalidering. I den här handledningen kommer vi att visa dig två metoder för att skapa rullgardinslista med flera kryssrutor i Excel.

Använd listrutan för att skapa en listruta med flera kryssrutor
A: Skapa en listruta med källdata
B: Namnge cellen där du hittar de valda objekten
C: Infoga en form som hjälper till att mata ut de valda objekten
Skapa enkelt listrutan med kryssrutor med ett fantastiskt verktyg
Fler handledning för rullgardinsmenyn ...


Använd listrutan för att skapa en listruta med flera kryssrutor

Som nedanstående skärmdump visas, i det aktuella kalkylbladet, kommer alla namn i intervall A2: A11 att vara källdata i listrutan. Klicka på knappen i cell C4 för att mata ut de valda objekten, och alla valda objekt i listrutan visas i cell E4. Gör så här för att uppnå detta.

A. Skapa en listruta med källdata

1. klick Utvecklare > Insert > Listbox (Active X Control). Se skärmdump:

2. Rita en listruta i det aktuella kalkylbladet, högerklicka på den och välj sedan Fastigheter från högerklickmenyn.

3. I Fastigheter i dialogrutan måste du konfigurera enligt följande.

  • 3.1 I ListFillRange rutan, ange källområdet du kommer att visa i listan (här anger jag intervall A2: A11);
  • 3.2 I Liststil rutan, välj 1 - fmList StyleOption;
  • 3.3 I Flera val rutan, välj 1 - fmMultiSelectMulti;
  • 3.4 Stäng Fastigheter dialog ruta. Se skärmdump:

B: Namnge cellen där du hittar de valda objekten

Om du behöver mata ut alla markerade objekt till en angiven cell som E4, gör så här.

1. Välj cellen E4, ange ListBoxOutput i Namn Box och tryck på ange nyckel.

C. Infoga en form som hjälper till att mata ut de markerade objekten

1. klick Insert > Former > Rektangel. Se skärmdump:

2. Rita en rektangel i ditt kalkylblad (här ritar jag rektangeln i cell C4). Högerklicka sedan på rektangeln och välj Tilldela makro från högerklickmenyn.

3. I Tilldela makro dialogrutan, klicka på Ny knapp.

4. I öppningen Microsoft Visual Basic för applikationer fönstret, byt ut den ursprungliga koden i Modulerna fönster med VBA-koden nedan.

VBA-kod: Skapa en lista med flera kryssrutor

Sub Rectangle1_Click()
'Updated by Extendoffice 20200730
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox1
If xLstBox.Visible = False Then
    xLstBox.Visible = True
    xSelShp.TextFrame2.TextRange.Characters.Text = "Pickup Options"
    xStr = ""
    xStr = Range("ListBoxOutput").Value
    
    If xStr <> "" Then
         xArr = Split(xStr, ";")
    For I = xLstBox.ListCount - 1 To 0 Step -1
        xV = xLstBox.List(I)
        For J = 0 To UBound(xArr)
            If xArr(J) = xV Then
              xLstBox.Selected(I) = True
              Exit For
            End If
        Next
    Next I
    End If
Else
    xLstBox.Visible = False
    xSelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
    For I = xLstBox.ListCount - 1 To 0 Step -1
        If xLstBox.Selected(I) = True Then
        xSelLst = xLstBox.List(I) & ";" & xSelLst
        End If
    Next I
    If xSelLst <> "" Then
        Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
    Else
        Range("ListBoxOutput") = ""
    End If
End If
End Sub

Notera: I koden, Rektangel1 är formnamnet; ListBox1 är namnet på listrutan; Alternativ och Pickupalternativ är de visade texterna av formen; och den ListBoxOutput är utdatacellens intervallnamn. Du kan ändra dem baserat på dina behov.

5. Tryck andra + Q samtidigt för att stänga Microsoft Visual Basic för applikationer fönster.

6. Klicka på rektangelknappen för att fälla eller expandera listrutan. När listrutan expanderar, markerar du objekten i listrutan och klickar sedan på rektangeln igen för att mata ut alla markerade objekt till cell E4. Se nedan demo:

7. Och spara sedan arbetsboken som en Excel Makroaktivera arbetsbok för att återanvända koden i framtiden.


Skapa rullgardinsmeny med kryssrutor med ett fantastiskt verktyg

Ovanstående metod är för flersteg för att hantera det enkelt. Här rekommenderar starkt Listruta med kryssrutor nytta av Kutools för excel för att hjälpa dig att enkelt skapa rullgardinsmenyn med kryssrutor i ett angivet intervall, aktuellt kalkylblad, aktuell arbetsbok eller alla öppnade arbetsböcker baserat på dina behov. Se nedanstående demo:
Ladda ner och prova nu! (30-dagars gratis led)

Förutom ovanstående demo tillhandahåller vi också en steg-för-steg-guide för att visa hur du använder den här funktionen för att uppnå denna uppgift. Gör så här.

1. Öppna kalkylbladet som du har ställt in listrutan för datavalidering, klicka på Kutools > Listrutan > Listruta med kryssrutor > Inställningar. Se skärmdump:

2. I Listruta med inställningar för kryssrutor dialogrutan, konfigurera så här.

  • 2.1) I Ansök till avsnittet, ange tillämpningsområdet där du skapar kryssrutor för objekt i listrutan. Du kan ange en visst intervall, nuvarande kalkylblad, aktuell arbetsbok or alla öppnade arbetsböcker baserat på dina behov.
  • 2.2) I Läge avsnitt, välj en stil som du vill mata ut de valda objekten;
  • Här tar Ändra alternativ som ett exempel, om du väljer detta kommer cellvärdet att ändras baserat på de valda objekten.
  • 2.3) I Separator rutan, ange en avgränsare som du kommer att använda för att separera flera objekt;
  • 2.4) I Textriktning avsnitt, välj en textriktning baserat på dina behov;
  • 2.5) Klicka på OK knapp.

3. Klicka på det sista steget Kutools > Listrutan > Listruta med kryssrutor > Aktivera rullgardinslista med kryssrutor för att aktivera den här funktionen.

Från och med nu, när du klickar på cellerna med rullgardinsmenyn i ett angivet omfång, kommer en listruta att dyka upp, välj objekt genom att markera kryssrutorna för att matas ut i cellen som nedanstående demo visas (Ta modifieringsläget som ett exempel ).

För mer information om den här funktionen, besök här.

  Om du vill ha en gratis provperiod (30-dag) för detta verktyg, klicka för att ladda ner den, och gå sedan till för att tillämpa operationen enligt ovanstående steg.


Relaterade artiklar:

Autoslutför när du skriver i Excel-rullgardinsmenyn
Om du har en rullgardinsmeny för datavalidering med stora värden måste du bläddra nedåt i listan bara för att hitta rätt eller skriva hela ordet direkt i listrutan. Om det finns en metod för att automatiskt slutföra när du skriver den första bokstaven i rullgardinsmenyn blir allt enklare. Denna handledning ger metoden för att lösa problemet.

Skapa rullgardinslista från en annan arbetsbok i Excel
Det är ganska enkelt att skapa en rullgardinslista för datavalidering bland kalkylblad i en arbetsbok. Men om listdata du behöver för datavalideringen hittar du i en annan arbetsbok, vad skulle du göra? I den här guiden lär du dig hur du skapar en drop-down-lista från en annan arbetsbok i Excel i detalj.

Skapa en sökbar rullgardinslista i Excel
För en rullgardinsmeny med många värden är det inte lätt att hitta en riktig. Tidigare har vi introducerat en metod för automatisk komplettering av rullgardinsmenyn när du anger den första bokstaven i rullgardinsmenyn. Förutom funktionen för autoslutförande kan du också göra listrutan sökbar för att förbättra arbetseffektiviteten för att hitta rätt värden i listrutan. För att göra rullgardinsmenyn sökbar, prova metoden i den här självstudien.

Fyll i andra celler automatiskt när du väljer värden i Excel-listrutan
Låt oss säga att du har skapat en rullgardinslista baserat på värdena i cellområdet B8: B14. När du väljer något värde i listrutan vill du att motsvarande värden i cellintervall C8: C14 fylls automatiskt i en vald cell. För att lösa problemet kommer metoderna i denna handledning att göra dig en tjänst.

Fler handledning för rullgardinsmenyn ...


De bästa Office-produktivitetsverktygen

Kutools for Excel Löser de flesta av dina problem och ökar din produktivitet med 80 %

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (70)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är fantastiskt. Men det blir bättre om multivalet kan placeras där markören är aktiv. Inte nödvändigtvis vad koden anger.
Denna kommentar minimerades av moderatoren på webbplatsen
Detta är precis vad jag har letat efter, kan koden modifieras för att tillåta den valda data att visas i separata celler ner i kolumnen? så istället för: måndag, tisdag, onsdag, visa som. måndag tisdag onsdag
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är precis vad jag har letat efter, finns det en modifiering av koden som kommer att lägga nästa val från listrutan på nästa rad. till exempel en två tre Istället för: en, två, tre
Denna kommentar minimerades av moderatoren på webbplatsen
kan du förklara hur du har lagt till ListBoxOutput på E4-cellen
Denna kommentar minimerades av moderatoren på webbplatsen
Hej Hur kan du kopiera denna listbox för flera celler. Bara att kopiera och klistra in fungerar inte. Kan du snälla förklara till exempel i varje cell (E5,E6,E7,E8,...) hur kan jag placera den här urvalsrutan?
Denna kommentar minimerades av moderatoren på webbplatsen
kan du förklara hur jag enkelt kan kopiera den här listrutan för 100 rader? (separata listrutor för var och en av 100 rader)
Denna kommentar minimerades av moderatoren på webbplatsen
När utmatningen är klar och tryck på knappen igen kan de tidigare valda objekten i listrutan inte ändras. Hur ska man lösa?
Denna kommentar minimerades av moderatoren på webbplatsen
Tack! Det är jättebra och det fungerar!
Denna kommentar minimerades av moderatoren på webbplatsen
Jag är nybörjare på detta men kan någon berätta för mig hur man skapar en flervalslista som öppnas, t.ex. när jag väljer ett namn. Jag vill att listrutan ska passa i en singel.
EXEMPEL: Jag har en lista med namn med kontaktinformation etc. Jag vill skapa en dubblett av Listbox för varje namn i min lista. Jag vill att den ska öppnas automatiskt när jag väljer ett namn och kollapsa tillbaka in i cellen när jag går till en annan rad med information. Vänligen ge råd. Tack på förhand.
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Randy,
Jag kan tyvärr inte lösa det här problemet.
Denna kommentar minimerades av moderatoren på webbplatsen
Det fungerar perfekt enligt instruktionerna, men om jag skyddar arket ger det och fel. Någon lösning för detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Fungerar perfekt enligt instruktionerna. Men hur kan jag använda detta på ett skyddat ark. För närvarande Om jag använder detta efter att ha skyddat arket Det ger mig och felet "Run-time error '-2147024809 (80070057)': Det specificerade värdet är utanför intervallet"
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Amit Sood,
Innan du skyddar kalkylbladet, formatera utdatacellen som olåst och använd sedan nedanstående VBA-kod. Tack för din kommentar.

Sub Rectangle2_Click()
Dim xSelShp As Shape, xSelLst Som Variant, I Som heltal
On Error Resume Next
Ställ in xSelShp = ActiveSheet.Shapes(Application.Caller)
Ställ in xLstBox = ActiveSheet.ListBox1
Om xLstBox.Visible = False Då
xLstBox.Visible = Sant
xSelShp.TextFrame2.TextRange.Characters.Text = "Hämtningsalternativ"
annars
xLstBox.Visible = Falskt
xSelShp.TextFrame2.TextRange.Characters.Text = "Välj alternativ"
För I = xLstBox.ListCount - 1 Till 0 Steg -1
Om xLstBox.Selected(I) = True Då
xSelLst = xLstBox.List(I) & ";" & xSelLst
End If
Nästa jag
Om xSelLst <> "" Då
Range("ListBoxOutput") = Mid(xSelLst, 1, Len(xSelLst) - 1)
annars
Range("ListBoxOutput") = ""
End If
End If
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
"Jag har skapat en fil med ActiveX listbox som du förklarat, där har jag angett en del data och och lagt till några egenskaper också. Jag har markerat vissa data med hjälp av kryssrutan i listan och sparat och avslutat filen. Men medan Om du öppnar filen igen visar den inga kontrollerade data..kan någon ge mig ett förslag för att spara dessa uppdateringar."
Kan någon hjälpa mig snälla.
Denna kommentar minimerades av moderatoren på webbplatsen
God dag,
Vänligen placera nedanstående VBA-kod i ThisWorkbook-kodfönstret.
I koden är Sheet6 standardnamnet på kalkylbladet som innehåller listrutan som du vill behålla valen enligt skärmbilden nedan. Och ListBox1 är namnet på listrutan. Vänligen ändra dem efter behov.

Privat Sub Workbook_BeforeSave (ByVal SaveAsUI Som Boolean, Avbryt Som Boolean)
Ring SaveSelections
End Sub

Privat Sub Workbook_Open ()
Ring RestoreSelections
End Sub

Private Sub SaveSelections()

Dim arr() Som Variant, i As Long, j As Long

Med Sheet6.OLEObjects("ListBox1").Object
Om .ListIndex > 0 Då
För i = 0 Till .ListCount - 1
Om .Selected(i) Då
j = j + 1
ReDim Bevara arr(1 till j)
arr(j) = i
End If
Nästa
Names.Add Name:="Selections", RefersTo:=arr, Visible:=False
End If
Sluta med

End Sub

Private Sub RestoreSelections()

Dim arr som variant, i som heltal

arr = [Urval]

Med Sheet6.OLEObjects("ListBox1").Object
För i = 1 Till UBound(arr)
.Selected(arr(i)) = Sant
Nästa
Sluta med

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för svaret sir, men det fungerar inte när det gäller min fil, kan du skicka ditt e-post-ID så att jag kan skicka min fil till dig.
Tack på förhand
Denna kommentar minimerades av moderatoren på webbplatsen
Kära manjusha isac,
Skicka din fil till zxm@addin99.com. Hoppas jag kan hjälpa till.
Denna kommentar minimerades av moderatoren på webbplatsen
Dessutom måste du spara arbetsboken som en Excel-makroaktiverad arbetsbok och aktivera koden varje gång du ändrar valen i listrutan.
Denna kommentar minimerades av moderatoren på webbplatsen
Jag vill automatiskt uppdatera namn i olika kolumner. är det möjligt om möjligt, dela gärna med mig koden.
Denna kommentar minimerades av moderatoren på webbplatsen
OTROLIGT det fungerar men när jag stänger excel och öppnar det igen är kryssrutan borta så om jag klickar på knappen kommer alla listan att försvinna.
snälla någon hjälp mig
Tack så mycket på förhand
Denna kommentar minimerades av moderatoren på webbplatsen
Kära ängel,
Vi har publicerat en artikel "Hur sparar eller behåller du val av ActiveX-listboxar i Excel?" som introducerar en metod för att spara valen av listrutor efter stängning och återöppning av arbetsboken.
Du kan följa denna länk för att få mer information: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
Denna kommentar minimerades av moderatoren på webbplatsen
fantastiskt att det fungerar men jag har ett problem efter att jag sparat filen och öppnat den igen, alla kryss i kryssrutan är borta
kan du hjälpa mig med detta tack så mycket
Denna kommentar minimerades av moderatoren på webbplatsen
också, det ändrar storleken på listrutan och formen alltid efter att spara och öppna filen igen om någon har en lösning på detta problem, snälla hjälp mig

Tack så mycket
Denna kommentar minimerades av moderatoren på webbplatsen
Kära Mark,
Vi har publicerat en artikel "Hur sparar eller behåller du val av ActiveX-listboxar i Excel?" som introducerar en metod för att spara valen av listrutor efter stängning och återöppning av arbetsboken.
Du kan följa denna länk för att få mer information: https://www.extendoffice.com/documents/excel/5051-excel-listbox-save-selection.html
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå,

Jag undrar om det finns ett sätt att styra upphämtningsalternativen till mer än en cell (inte bara E4), eller göra valen till en rullgardinslista så att jag kan välja flera alternativ från en checklista, men gör det upprepade gånger och oberoende av andra val jag har gjort. Till exempel, hur skulle jag gå tillväga för att använda samma lista med hämtningsalternativ för att mata in ett annat urval av artiklar till E5, E6, E7, etc. från samma hämtningslista.

Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Hej LizKats,
Vänligen prova koden nedan. Hoppas jag kan hjälpa till. Tack.

Sub Rectangle2_Click()

'Uppdaterad av Extendoffice 20200529

Dim xSelShp som form, xSelLst som variant, i som heltal

Ställ in xSelShp = ActiveSheet.Shapes(Application.Caller)

Ställ in xLstBox = ActiveSheet.ListBox1

Dim xRg As Range

Dim xCount, xFNum, xR, xC Som heltal

Dim xStr As String

Om xLstBox.Visible = False Då

xLstBox.Visible = Sant

xSelShp.TextFrame2.TextRange.Characters.Text = "Hämtningsalternativ"

annars

xLstBox.Visible = Falskt

xSelShp.TextFrame2.TextRange.Characters.Text = "Välj alternativ"

Ställ in xRg = Range("ListBoxOutput")

xCount = xLstBox.ListCount - 1

xStr = ""

För i = xLstBox.ListCount - 1 Till 0 Steg -1

Om xLstBox.Selected(i) = True Då

xStr = xLstBox.List(i) & ";" & xStr

End If

Nästa jag



Om xRg.Value = "" Då

xRg.Value = xStr

annars

Ställ in xRg = xRg.Offset(1, 0)

Gör medan xRg.Value <> ""

Ställ in xRg = xRg.Offset(1, 0)

loop

xRg.Value = xStr

End If

End If

End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Hallå,

Tack så mycket för denna underbara artikel! Det här var den modifierade koden jag letade efter i kommentarerna! Men jag ser att den kombinerade xStr-strängen lägger till ett semikolon ";" till slutet på något sätt. Jag kan inte felsöka hur man inte inkluderar semikolon i slutet av strängen.

Finns det också något sätt att ange specifika cellområden för xRg? Jag syftar på Set xRg = Range("ListBoxOutput") och vill ändra ListBoxOutput till något som H5:H10 & H15:20. Skulle det vara möjligt på något sätt?
Denna kommentar minimerades av moderatoren på webbplatsen
Det fungerar bra, tack så mycket för hjälpen. Jag har ett problem här är att all utdata kommer i samma cell E4, hur kan vi få utdata i olika celler Till exempel: utdata för C4 i E4, C5 i E5, C6 i E6 etc.
Denna kommentar minimerades av moderatoren på webbplatsen
God dag,
Problemet du nämnde kan inte lösas ännu.
Denna kommentar minimerades av moderatoren på webbplatsen
Добрый день! Прошу помочь.
Hur kan du göra något för dig? чтобы по выходило по вертикали?
Denna kommentar minimerades av moderatoren på webbplatsen
HJÄLP!!! hur produktion i olika intervall (vertikalt)?
Denna kommentar minimerades av moderatoren på webbplatsen
Sub Rectangle2_Click()
'Uppdaterad av Extendoffice 20190924
Dim xSelShp As Shape, xSelLst Som Variant, I Som heltal
Dim xRg As Range
Ställ in xSelShp = ActiveSheet.Shapes(Application.Caller)
Ställ in xLstBox = ActiveSheet.ListBox1
Om xLstBox.Visible = False Då
xLstBox.Visible = Sant
xSelShp.TextFrame2.TextRange.Characters.Text = "Hämtningsalternativ"
annars
xLstBox.Visible = Falskt
xSelShp.TextFrame2.TextRange.Characters.Text = "Välj alternativ"
Ställ in xRg = Range("ListBoxOutput")
För I = 0 Till xLstBox.ListCount - 1
Om xLstBox.Selected(I) = True Då
xSelLst = xLstBox.List(I)
xRg.Value = Mid(xSelLst, 1, Len(xSelLst))
Ställ in xRg = xRg.Offset(1, 0)
End If
Nästa jag
End If
End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
Como puedo replicar éste ejercicio en las filas inferiores ?
Hur kan jag replikera denna övning i raderna nedan?
Det finns inga kommentarer här ännu
Ladda fler

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL