Բաց թողնել հիմնական բովանդակությունը

Ինչպե՞ս ստեղծել բացվող ցուցակ Excel- ում բազմաթիվ վանդակում:

Excel- ի շատ օգտվողներ հակված են բացման ցուցակ ստեղծել բազմաթիվ վանդակում, որպեսզի ամեն անգամ ցուցակից ընտրեն բազմաթիվ իրեր: Իրականում, Դուք չեք կարող ստեղծել տվյալների վավերացումով բազմաթիվ ցուցանակներով ցուցակ: Այս ձեռնարկում մենք ցույց կտանք ձեզ Excel- ում բազմաթիվ վանդակումներով բացվող ցուցակ ստեղծելու երկու եղանակ:

Օգտագործեք Boxուցակ տուփը ՝ բացման ցուցակ ստեղծելու համար ՝ բազմաթիվ վանդակներով
Պատասխան. Ստեղծեք ցուցակի տուփ աղբյուրի տվյալներով
B: Անվանեք այն բջիջը, որը դուք կտեղադրեք ընտրված իրերը
C: Տեղադրեք մի ձև, որը կօգնի դուրս բերել ընտրված իրերը
Anարմանալի գործիքով հեշտությամբ ստեղծեք բացվող ցուցակ տուփերով
Բացվող ցուցակի այլ ձեռնարկներ ...


Օգտագործեք Boxուցակ տուփը ՝ բացման ցուցակ ստեղծելու համար ՝ բազմաթիվ վանդակներով

Ինչպես ցույց է տրված սքրինշոթից ներքևում, ընթացիկ աշխատաթերթում A2: A11 տիրույթի բոլոր անունները կլինեն ցուցակի վանդակի աղբյուրի տվյալները: C4 բջիջի կտտոցով կտտացնելը կարող է դուրս բերել ընտրված իրերը, և ցուցակի վանդակում գտնվող բոլոր ընտրված տարրերը կցուցադրվեն E4 բջիջում: Դրան հասնելու համար խնդրում ենք վարվել հետևյալ կերպ.

A. Ստեղծեք ցուցակի տուփ աղբյուրի տվյալներով

1: սեղմեք Երեվակիչ > Տեղադրել > Ցուցակի տուփ (ակտիվ X կառավարման), Տեսեք,

2. Ներկայիս աշխատանքային թերթում նկարեք ցուցակի վանդակը, աջով կտտացրեք այն և ընտրեք Հատկություններ աջ կտտացնելու ցանկից:

3. Մեջ Հատկություններ երկխոսության տուփ, դուք պետք է կազմաձևեք հետևյալը.

  • 3.1 ListFillRange տուփ, մուտքագրեք աղբյուրի տիրույթը, որը կցուցադրեք ցուցակում (այստեղ ես մուտքագրում եմ տիրույթ A2: A11);
  • 3.2 ListStyle տուփ, ընտրեք 1 - fmList StyleOption;
  • 3.3 MultiSelect տուփ, ընտրեք 1 - fmMultiSelectMulti;
  • 3.4 Հատկություններ երկխոսության տուփ: Տեսեք,

B: Անվանեք այն բջիջը, որը դուք կտեղադրեք ընտրված իրերը

Եթե ​​Ձեզ անհրաժեշտ է բոլոր ընտրված տարրերը դուրս բերել նշված բջիջ, ինչպիսին է E4- ը, խնդրում ենք անել հետևյալը:

1. Ընտրեք E4 բջիջը, մուտքագրեք ListBoxOutput- ը մեջ Անունը Box եւ սեղմեք այն Մտնել բանալի.

Գ. Տեղադրեք ձև, որն օգնում է ընտրված իրերը դուրս բերելուն

1: սեղմեք Տեղադրել > Ձեւավորում > Ուղղանկյուն: Տեսեք,

2. Ձեր աշխատաթերթում նկարեք ուղղանկյուն (այստեղ ես նկարում եմ C4 բջիջի ուղղանկյունը): Դրանից հետո աջ կտտացրեք ուղղանկյունին և ընտրեք Նշանակեք մակրո աջ կտտացնելու ցանկից:

3. Մեջ Նշանակեք մակրո երկխոսության տուփ, կտտացրեք նոր կոճակը:

4. Բացման մեջ Microsoft Visual Basic հավելվածների համար պատուհանը, խնդրում ենք փոխարինել բնօրինակ կոդը ՝ Մոդուլներ ստորև նշված VBA կոդով պատուհան:

VBA կոդ. Ստեղծեք ցուցակ բազմաթիվ վանդակների հետ

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

Նշում: Կոդում, Ուղղանկյուն 1 ձևի անունն է. ListBox1- ը ցուցակի վանդակի անունն է. Ընտրել Ընտրք և Վերցնելու ընտրանքներ ձևի ցուցադրվող տեքստերն են. եւ ListBoxOutput- ը ելքային վանդակի միջակայքի անունն է: Դրանք կարող եք փոխել ՝ ելնելով ձեր կարիքներից:

5. Մամուլ ալտ + Q ստեղները միաժամանակ փակելու համար Microsoft Visual Basic հավելվածների համար պատուհան.

6. Սեղմեք ուղղանկյան կոճակի վրա, ցուցակի վանդակը ծալվում կամ ընդլայնվում է: Երբ ցուցակի վանդակը ընդլայնվում է, ստուգեք ցուցակի վանդակում գտնվող կետերը և այնուհետև կրկին կտտացրեք ուղղանկյունին ՝ բոլոր ընտրված իրերը E4 բջիջ դուրս բերելու համար: Տե՛ս ստորև ցուցադրումը.

7. Եվ այնուհետև պահպանեք աշխատանքային գրքույկը որպես Excel MacroEnable աշխատանքային գիրք ապագայում կոդը կրկին օգտագործելու համար:


Createարմանալի գործիքով ստեղծեք բացվող ցուցակ տուփերով

Վերոնշյալ մեթոդը չափազանց բազմաստիճան է `հեշտությամբ կարգավորելու համար: Այստեղ բարձր խորհուրդ են տալիս Բացվող ցուցակ ՝ տուփերով օգտակարությունը Kutools համար Excel օգնելու ձեզ հեշտությամբ ստեղծել բացվող ցուցակ նշված տիրույթում, ընթացիկ աշխատաթերթում, ընթացիկ աշխատանքային գրքում կամ բոլոր բացված աշխատանքային գրքույկներում ՝ ձեր կարիքների հիման վրա: Տե՛ս ստորև ներկայացված ցուցադրումը.
Ներբեռնեք և փորձեք հիմա: (30 օր անվճար արահետ)

Բացի վերը նշված ցուցադրումից, մենք նաև տրամադրում ենք քայլ առ քայլ ուղեցույց `ցույց տալու, թե ինչպես կիրառել այս հատկությունը` այս խնդրին հասնելու համար: Խնդրում եմ, արեք հետևյալ կերպ.

1. Բացեք տվյալների վավերացման բացվող ցուցակը սահմանած աշխատանքային թերթը, կտտացրեք Կուտոլս > Բացվող ցուցակ > Բացվող ցուցակ ՝ տուփերով > Պարամետրեր. Տեսեք,

2. Մեջ Բացվող ցուցակը `Ստուգման տուփի պարամետրերով երկխոսության տուփ, խնդրում ենք կազմաձևել հետևյալը.

  • 2.1) Ի Դիմել բաժինը, նշեք կիրառման շրջանակը, որտեղ դուք կստեղծեք վանդակներ `բացվող ցուցակում գտնվող իրերի համար: Կարող եք նշել ա որոշակի տիրույթ, ընթացիկ աշխատանքային թերթ, ընթացիկ աշխատանքային գրքույկ or բոլոր բացված աշխատանքային գրքերը հիման վրա ձեր կարիքները.
  • 2.2) Ի ռեժիմ բաժնում ընտրեք ոճ, որը ցանկանում եք դուրս բերել ընտրված տարրերը.
  • Այստեղ վերցնում է Փոփոխել տարբերակը որպես օրինակ, եթե սա ընտրեք, բջիջի արժեքը կփոխվի ՝ ելնելով ընտրված տարրերից:
  • 2.3) Ի Բաժանիչ տուփ, մուտքագրեք սահմանազատիչ, որը կօգտագործեք բազմաթիվ իրերը բաժանելու համար.
  • 2.4) Ի Տեքստի ուղղությունը բաժնում, ընտրեք տեքստի ուղղությունը `ելնելով ձեր կարիքներից;
  • 2.5) Կտտացրեք այն OK կոճակը:

3. Վերջին քայլը, կտտացրեք Կուտոլս > Բացվող ցուցակ > Բացվող ցուցակ ՝ տուփերով > Միացնել տրոհման տուփերի անկման ցուցակը ակտիվացնել այս հատկությունը:

Այսուհետ, երբ կտտացնում եք նշված տիրույթում բացվող ցուցակով բջիջները, կհայտնվի ցուցակի վանդակը, ընտրեք իրերը ՝ նշելով վանդակները ՝ բջիջ դուրս գալու համար, ինչպես ցույց է տրված ստորև ցուցադրված ցուցադրումը (Վերցրեք փոփոխության ռեժիմը որպես օրինակ )

Այս հատկության մասին ավելի մանրամասն տեղեկություններ ստանալու համար, խնդրում ենք այցելել այստեղ.

  Եթե ​​ցանկանում եք ունենալ այս օգտակար ծառայության անվճար փորձարկում (30-օրյա), խնդրում ենք կտտացնել այն ներբեռնելու համար, և այնուհետև անցեք գործողությունը կիրառելու վերը նշված քայլերին համապատասխան:


Առնչվող հոդվածներ քանակը:

Excel- ի բացման ցուցակը մուտքագրելիս ավտոմատ լրացնել
Եթե ​​ունեք տվյալների վավերացման մեծ ցանկ ունեցող ցուցիչ, ապա հարկավոր է ոլորել ցուցակում `պատշաճը գտնելու համար, կամ ամբողջ բառն ուղղակիորեն մուտքագրել ցուցակի վանդակում: Եթե ​​կա բացման ցուցակում առաջին տառը մուտքագրելիս ավտոմատ կերպով լրացնելու թույլտվության մեթոդ, ամեն ինչ կդառնա ավելի հեշտ: Այս ձեռնարկը տրամադրում է խնդիրը լուծելու մեթոդը:

Excel- ում ստեղծեք մեկ այլ աշխատանքային գրքից բացվող ցուցակ
Տվյալների վավերացման բացվող ցուցակը աշխատանքային գրքում ստեղծելը բավականին հեշտ է: Բայց եթե տվյալների վավերացման համար անհրաժեշտ ցուցակի տվյալները տեղակայվեն մեկ այլ աշխատանքային գրքում, ի՞նչ կանեիք: Այս ձեռնարկում դուք կսովորեք, թե ինչպես մանրամասնորեն ստեղծել Excel- ի մեկ այլ աշխատանքային գրքից թողարկված ցանկի ցուցակ:

Excel- ում ստեղծեք որոնելի բացվող ցուցակ
Բազմաթիվ արժեքներով բացվող ցուցակի համար պատշաճ գտնելը հեշտ գործ չէ: Նախկինում մենք ներմուծել ենք բացվող ցուցակը ավտոմատ կերպով լրացնելու մեթոդ, երբ առաջին տառը մուտքագրեք բացվող վանդակում: Ինքնալրացման գործառույթից բացի, դուք կարող եք նաև բաց թողնել ցանկը որոնելի դարձնել `բացվող ցուցակում պատշաճ արժեքներ գտնելու գործում աշխատանքային արդյունավետությունը բարձրացնելու համար: Բացվող ցուցակը որոնելի դարձնելու համար փորձեք այս ձեռնարկի մեթոդը:

Excel- ի բացվող ցուցակում արժեքներ ընտրելիս ավտոմատ կերպով լրացրեք այլ բջիջներ
Ասենք, որ դուք ստեղծել եք բացվող ցուցակ `հիմնվելով B8: B14 բջիջների տիրույթի արժեքների վրա: Բացվող ցուցակում ցանկացած արժեք ընտրելիս ցանկանում եք, որ համապատասխան արժեքները C8: C14 բջիջների տիրույթում ավտոմատ կերպով լրացվեն ընտրված խցում: Խնդրի լուծման համար, այս ձեռնարկի մեթոդները կօգնեն ձեզ:

Բացվող ցուցակի այլ ձեռնարկներ ...

Գրասենյակի արտադրողականության լավագույն գործիքները

🤖 Kutools AI օգնականՀեղափոխություն կատարել տվյալների վերլուծության հիման վրա՝ Խելացի կատարում   |  Ստեղծեք ծածկագիր  |  Ստեղծեք հատուկ բանաձևեր  |  Վերլուծել տվյալները և ստեղծել գծապատկերներ  |  Invoke Kutools-ի գործառույթները...
Հանրաճանաչ հատկություններ: Գտեք, ընդգծեք կամ նույնականացրեք կրկնօրինակները   |  Deleteնջել դատարկ շարքերը   |  Միավորել սյունակները կամ բջիջները՝ առանց տվյալների կորստի   |   Կլոր առանց բանաձևի ...
Super Փնտրել: Բազմաթիվ չափանիշների VLookup    Բազմակի արժեք VLookup  |   VLookup բազմաթիվ թերթերում   |   Fuzzy Փնտրել ....
Ընդլայնված բացվող ցուցակ: Արագ ստեղծեք բացվող ցուցակը   |  Կախված բացվող ցուցակ   |  Բազմակի ընտրություն Drop Down ցուցակ ....
Սյունակի կառավարիչ: Ավելացրեք որոշակի քանակությամբ սյունակներ  |  Տեղափոխել սյունակները  |  Փոխարկել թաքնված սյունակների տեսանելիության կարգավիճակը  |  Համեմատեք միջակայքերը և սյունակները ...
Առանձնահատկություններ: Ցանցի կենտրոնացում   |  Դիզայնի տեսք   |   Մեծ Formula Bar    Աշխատանքային գրքույկի և թերթիկների կառավարիչ   |  Ռեսուրսների գրադարան (Ավտոմատ տեքստ)   |  Ամսաթիվ ընտրող   |  Միավորել աշխատանքային թերթերը   |  Գաղտնագրել/գաղտնազերծել բջիջները    Ուղարկեք նամակներ ըստ ցանկի   |  Սուպեր զտիչ   |   Հատուկ զտիչ (զտել թավ/շեղ/շեղված...) ...
Լավագույն 15 գործիքների հավաքածու12 Տեքստ Գործիքներ (Ավելացրեք տեքստ, Հեռացնել նիշերը, ...)   |   50+ Աղյուսակ Տեսակներ (Գանտի աղյուսակը, ...)   |   40+ Գործնական Բանաձեւեր (Հաշվարկել տարիքը ՝ ելնելով ծննդյան տարեդարձից, ...)   |   19 միացում Գործիքներ (Տեղադրեք QR կոդ, Տեղադրեք նկար ուղուց, ...)   |   12 Փոխարկում Գործիքներ (Բառեր համարներ, Արտարժույթի փոխակերպումը, ...)   |   7 Միաձուլում և պառակտում Գործիքներ (Ընդլայնված կոմբինատ տողեր, Պառակտված բջիջներ, ...)   |   ... եւ ավելին

Լրացրեք ձեր Excel-ի հմտությունները Kutools-ի հետ Excel-ի համար և փորձեք արդյունավետությունը, ինչպես երբեք: Kutools-ը Excel-ի համար առաջարկում է ավելի քան 300 առաջադեմ առանձնահատկություններ՝ արտադրողականությունը բարձրացնելու և ժամանակ խնայելու համար:  Սեղմեք այստեղ՝ Ձեզ ամենաշատ անհրաժեշտ հատկանիշը ստանալու համար...

Նկարագրություն


Office Tab- ը Tabbed ինտերֆեյսը բերում է Office, և ձեր աշխատանքը շատ ավելի դյուրին դարձրեք

  • Միացնել ներդիրներով խմբագրումը և ընթերցումը Word, Excel, PowerPoint- ով, Հրատարակիչ, Access, Visio և Project:
  • Բացեք և ստեղծեք բազմաթիվ փաստաթղթեր նույն պատուհանի նոր ներդիրներում, այլ ոչ թե նոր պատուհաններում:
  • Բարձրացնում է ձեր արտադրողականությունը 50%-ով և նվազեցնում մկնիկի հարյուրավոր սեղմումները ձեզ համար ամեն օր:
Comments (70)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
Hello-

This is fabulous, but I was wondering if there is a way to call the code as a subroutine, ie Click Button 1, run this code with X List Box and X Output cell. I want to pass the listbox and the output cell as variables into this code. Any help would be greatly appreciated.

I've tried this:
Private Sub Rectangle1_Click()
Call MultiSelctDropdown(ListBox1,Output1)
End Sub

Private Sub Rectangle2_Click()
Call MultiSelctDropdown(ListBox2,Output2)
End Sub

Private Sub MultiSelectDropdown(ListBox As String, Output As String)
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = ActiveSheet.ListBox
If xLstBox.Visible = False Then
xLstBox.Visible = True
xSelShp.TextFrame2.TextRange.Characters.Text = "Enter"
xStr = ""
xStr = Range("Output").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 = "Click Here to Select Products"
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("Output") = Mid(xSelLst, 1, Len(xSelLst) - 1)
Else
Range("Output") = ""
End If
End If
End Sub
This comment was minimized by the moderator on the site
Ok I figured this one out (see below)

But now I want to have only ONE list box that I can use over and over again with different buttons but different output depending on the button pushed. And the code below works for this EXCEPT the items selected when the list box pops up includes all items that have been outputted from the code.

If list box1 contains

Apples
Oranges
Pears
Kiwi

and button 1 is pressed and Apples is selected, when button 2 is pressed Apples is already selected, and if during button press 2 pears is selected when you go back to button 1 Apples AND Pears are selected.

How can I either clear all selected when a button is pressed OR make the selected options equal to the output.


Private Sub Button1_Click()
Call ProductSelection(ActiveSheet.ListBox1, "Button1Output", 243, 215)
End Sub
Private Sub Button2_Click()
Call ProductSelection(ActiveSheet.ListBox1, "Button2Output", 472, 215)
End Sub



Private Sub ProductSelection(xListBox As Object, Output As String, left As Integer, height As Integer)
Dim xSelShp As Shape, xSelLst As Variant, I, J As Integer
Dim xV As String
Set xSelShp = ActiveSheet.Shapes(Application.Caller)
Set xLstBox = xListBox
If xLstBox.Visible = False Then
xLstBox.Visible = True
xLstBox.left = left
xLstBox.height = height
xSelShp.TextFrame2.TextRange.Characters.Text = "Enter"
xStr = ""
xStr = Range(Output).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 = "Click Here to Select Products"
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(Output) = Mid(xSelLst, 1, Len(xSelLst) - 1)
Else
Range(Output) = ""
End If
End If
End Sub
This comment was minimized by the moderator on the site
Hi there- this is super helpful, thank you! Can you tell me how I can draw a list box based on a list in a different worksheet (but same file)? I've tried entering my worksheet name (i.e., 'lists') followed by the range in the list fill range (after clicking on Properties) but this does not work.Thanks!
This comment was minimized by the moderator on the site
Hi Meghan,Supposing you want to <span style="letter-spacing: 0.2px; color: inherit; font-family: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit;">ListBox1</span><span style="letter-spacing: 0.2px; color: inherit; font-family: inherit; font-style: inherit; font-variant-ligatures: inherit; font-variant-caps: inherit;">Sheet1</span><div data-tag="code">Sub listboxlistfillrangefromdifferentsheet()
Sheet1.ListBox1.ListFillRange = Sheet2.Range("A2:A20").Address(, , , True)
End Sub
This comment was minimized by the moderator on the site
hello, I have a problem with the list box: to make the list going down, I have to click on the box that allows the list to go down but when I click, it does not go down automatically, I have to click outside the list so that it refreshes and the list goes down, what to do? Thank you
This comment was minimized by the moderator on the site
Hi,You can't scroll ActiveX Listbox by mouse wheel. There is no setting for it.

This comment was minimized by the moderator on the site
Hi, thank you for sharing this! I have a question though, is it possible to populate different cells based on the selected option?For example, instead of having everything in one cell, each selection is populated in the cell below the earlier selection. Thank you!
This comment was minimized by the moderator on the site
Hi faez,
The VBA below helps to populate the selected options in different cells on the same row. Please have a try.

Sub Rectangle2_Click()
'Updated by Extendoffice 20211124
Dim xSelShp As Shape, xSelLst As Variant, I As Integer
Dim xRg As Range
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"
Else
xLstBox.Visible = False
xSelShp.TextFrame2.TextRange.Characters.Text = "Select Options"
Set xRg = Range("ListBoxOutput")
For I = 0 To xLstBox.ListCount - 1
If xLstBox.Selected(I) = True Then
xSelLst = xLstBox.List(I)
xRg.Value = Mid(xSelLst, 1, Len(xSelLst))
Set xRg = xRg.Offset(0, 1)
End If
Next I
End If
End Sub
This comment was minimized by the moderator on the site
Hi Crystal,
Thanks a lot for this code, very helpful and convenient. One question : how to adpat it in order not to have the separator ";" if only one item is selected ?
This comment was minimized by the moderator on the site
Hi Eloi,No separator is displayed when you select only one item in the list.
This comment was minimized by the moderator on the site
Thanks Crystal, the mistake was in my adaptation of the code.
If someone needs to adapt it with a click on a cell instead of a click on a shape, you could try this (with a call to this sub in your sheet, with a condition when your cell is selected)

Sub affichage_liste(xLstBox As MSForms.ListBox, texte1 As String)
'Updated by Extendoffice 20200730
Dim xSelLst As Variant, I, J As Integer
Dim xV As String

If xLstBox.Visible = False Then
xLstBox.Visible = True
xStr = ""
xStr = Range(texte1).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
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(texte1) = Mid(xSelLst, 1, Len(xSelLst) - 2)
Else
Range(texte1) = ""
End If
End If
End Sub
This comment was minimized by the moderator on the site
Hi Eloi,The code you provided doesn't seem to work. I have modified it again as below.  After adding the code in your Sheet(Code) window, go back to the worksheet, click the cell C4 to expand the list box, after selecting items from the list box, click on any cell in the worksheet to output the selection, and no separator is displayed when you select only one item in the list.
<div data-tag="code">Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updated by Extendoffice 20211223
Dim xSelLst As Variant, I, J As Integer
Dim xV As String
Set xLstBox = ActiveSheet.ListBox1

If Target.Address = "$C$4" Then


If xLstBox.Visible = False Then
xLstBox.Visible = True
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

End If

Else
xLstBox.Visible = False

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) - 2)
Else
Range("ListBoxOutput") = ""
End If


End If

End Sub
This comment was minimized by the moderator on the site
Thanks a lot Crystal
This comment was minimized by the moderator on the site
Bonjour,Je suis plus que novice sur excel étant sur mac je ne peux utiliser l'outil Kutools j'ai donc tenté de créer une liste déroulante où l'on peut cocher plusieurs items mais je bloque dès le début dans l'onglet développeur puisque je n'ai pas du tout l'outil "insert".Merci pour votre aide
This comment was minimized by the moderator on the site
Hi I am newbie to VBA. I tried to execute the code but i get the following error "Run-time error '-2147024809 (80070057)': The Item with the specified name wasn't found". Can you help me with this
This comment was minimized by the moderator on the site
Hi Gowtham,It seem that this error occurs when you running the code directly in the Code editor (the Microsoft Visual Basic for Applications window).After adding the code, please press the Alt + Q keys to close the Microsoft Visual Basic for Applications window. Go back to the worksheet and execute the code by clicking the rectangle button (see the .gif picture in step 6).
This comment was minimized by the moderator on the site
Hi Crystal, even after your tip am getting same error as Gowtham. My error is right after protect my sheet. Would you please help me with this issue?
This comment was minimized by the moderator on the site
Hi Crystal, Even After your tip I am getting same error as Gowtham.
This comment was minimized by the moderator on the site
Hi Mina,Which Excel and Windows version are you using?
This comment was minimized by the moderator on the site
Hello,I added this code to an existing macro template and it is loading the selections correctly, but it is NOT clearing out the x on the selected items..This will be used on/in a template worksheet that has submit button/macro to load the worksheet answers into a hidden worksheet with a data table.And am happy to say the field data loaded to the cell, transferred into my variable, and loaded to the data table as expected.
This code was a HUGE blessing!
I use excel 2016
How do I fix this. I am using this version from below.
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
This comment was minimized by the moderator on the site
Hello,

I'm having a similar problem to Tom from 2 months ago. When I try to share my file with a colleague, the multi-select droplist list isn't working. However, I used the Kutools add-on to create this as opposed to creating it myself. I've also saved it as macro-enabled.
This comment was minimized by the moderator on the site
Hi ben,The multi-select drop down list feature of Kutools only works in the Excel that installed our Kutools. We are working on this issue, sorry for the inconvenience.
This comment was minimized by the moderator on the site
Hello I looking the resolve for problem with saving choosing on drop down list

when i choose something on list and send file to my colleague, then when he open file and want to check my list then list has cleared and cell "ListBoxOutput" was cleared too.

help please :)
This comment was minimized by the moderator on the site
Hi Tom,
Please save the workbook as an "Excel MacroEnable Workbook" and then send this .xlsm file to your colleague.
This comment was minimized by the moderator on the site
hello i save this file in this format from beginning ;), but without effect. still when i fill file and send to someone then when he opened file and click to "shape" then macro started from begin and cleared list
This comment was minimized by the moderator on the site
Hi Tom,
I am sorry for the mistake. The code has been updated again. Please have a try.

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
This comment was minimized by the moderator on the site
Now it's working perfectly.

Many thanks for your help
There are no comments posted here yet
Load More
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations