Բացվող ցուցակ՝ բազմակի ընտրությամբ

Excel թերթիկի դասական բացվող ցուցակը հիանալի է, բայց այն թույլ է տալիս միայն մեկ տարբերակ ընտրել ներկայացված հավաքածուից: Երբեմն դա հենց այն է, ինչ դուք ցանկանում եք, բայց կան իրավիճակներ, երբ օգտագործողը պետք է կարողանա ընտրություն կատարել մոտ տարրեր ցանկից:

Դիտարկենք նման բազմակի ընտրության ցուցակի մի քանի բնորոշ իրականացում:

Տարբերակ 1. Հորիզոնական

Օգտագործողը ընտրում է իրերը բացվող ցանկից մեկ առ մեկ, և դրանք հայտնվում են փոփոխվող բջիջի աջ կողմում՝ ավտոմատ կերպով հորիզոնական թվարկվելով.

Այս օրինակում C2:C5 բջիջներում բացվող ցուցակները ստեղծվել են ստանդարտ եղանակով, այսինքն

  1. ընտրել C2:C5 բջիջները
  2. ներդիր կամ մենյու Ամսաթիվ ընտրիր թիմ Տվյալների վավերացում
  3. բացվող պատուհանում ընտրեք որևէ տարբերակ Ցուցակ և նշեք որպես տիրույթ Աղբյուր բջիջներ՝ A1:A8 ցուցակի աղբյուրի տվյալներով

Այնուհետև թերթի մոդուլին պետք է ավելացնել մակրո, որը կկատարի ամբողջ հիմնական աշխատանքը, այսինքն՝ ընտրված արժեքները կավելացվի կանաչ բջիջների աջ կողմում: Դա անելու համար աջ սեղմեք թերթիկի ներդիրի վրա բացվող ցուցակներով և ընտրեք հրամանը Source կոդը. Տեղադրեք հետևյալ կոդը Visual Basic խմբագրիչի պատուհանում, որը բացվում է.

Մասնավոր ենթամաս Worksheet_Change(ByVal Target As Range) Սխալի դեպքում Resume Next If Not Intersect(Target, Range("C2:C5")) ոչինչ է և Target.Cells.Count = 1 Հետո Application.EnableEvents = False If Len(Target.Offset): (0, 1)) = 0 Այնուհետեւ Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Անհրաժեշտության դեպքում այս կոդի երկրորդ տողի C2:C5 բացվող ցուցակների զգայուն տիրույթը փոխարինեք ձեր սեփականով:

Տարբերակ 2. Ուղղահայաց

Նույնը, ինչ նախորդ տարբերակում, բայց ընտրված նոր արժեքները ավելացվում են ոչ թե աջ, այլ ներքևում.

Դա արվում է ճիշտ նույն կերպ, բայց մշակողի մակրո կոդը մի փոքր փոխվում է.

Մասնավոր ենթամաս Worksheet_Change(ByVal Target As Range) Սխալի դեպքում Resume Next If Not Intersect(Target, Range("C2:F2")) ոչինչ է և Target.Cells.Count = 1 Հետո Application.EnableEvents = False If Len(Target.Offset): (1, 0)) = 0 Հետո Target.Offset(1, 0) = Target Else Target.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Կրկին, անհրաժեշտության դեպքում, այս կոդի երկրորդ տողում փոխարինեք C2:F2 բացվող ցուցակների զգայուն տիրույթը ձեր սեփականով:

Տարբերակ 3. Նույն խցում կուտակումով

Այս տարբերակում կուտակումը տեղի է ունենում նույն բջիջում, որտեղ գտնվում է բացվող ցուցակը: Ընտրված տարրերն առանձնացված են ցանկացած նիշով (օրինակ՝ ստորակետով).

Կանաչ բջիջներում բացվող ցուցակները ստեղծվում են ամբողջովին ստանդարտ ձևով, ինչպես նախորդ մեթոդներում: Ամբողջ աշխատանքը կատարվում է, կրկին, թերթի մոդուլի մակրոյով.

Մասնավոր ենթամաս Worksheet_Change (ByVal Target As Range) Սխալի դեպքում Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Հետո Application.EnableEvents = False newVal = Target Application.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal then Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 then Target.ClearContents Application.EnableEvents = True End Եթե Վերջ Ենթ  

Ցանկության դեպքում կոդի 9-րդ տողում կարող եք փոխարինել բաժանարար նիշը (ստորակետը) ձեր սեփականով (օրինակ՝ բացատ կամ ստորակետ)։

  • Ինչպես ստեղծել պարզ բացվող ցուցակ excel թերթի բջիջում
  • Բացվող ցուցակ բովանդակությամբ
  • Բացվող ցուցակ՝ ավելացված բացակայող տարբերակներով
  • Ինչ են մակրոները, ինչպես օգտագործել դրանք, որտեղ տեղադրել մակրո կոդը Visual Basic-ում

Թողնել գրառում