Выпадны спіс з множным выбарам

Класічны выпадальны спіс у аркушы Excel выдатны, але ён дазваляе выбраць толькі адзін варыянт з прадстаўленага набору. Часам гэта менавіта тое, што вы хочаце, але бываюць сітуацыі, калі карыстальнік павінен мець магчымасць выбару некаторыя элементы са спісу.

Давайце паглядзім на некалькі тыповых рэалізацый такога спісу множнага выбару.

Варыянт 1. Гарызантальны

Карыстальнік выбірае элементы з выпадальнага спісу адзін за адным, і яны з'яўляюцца справа ад ячэйкі, якая змяняецца, аўтаматычна пералічваючыся па гарызанталі:

Выпадальныя спісы ў ячэйках C2:C5 у гэтым прыкладзе ствараюцца стандартным спосабам, г. зн

  1. выбраць ячэйкі C2:C5
  2. ўкладка або меню Дата выбраць каманду Праверка дадзеных
  3. у якое адкрылася акне абярыце опцыю спіс і пакажыце ў якасці дыяпазону крыніца ячэйкі з зыходнымі дадзенымі для спісу A1:A8

Затым у модуль ліста неабходна дадаць макрас, які будзе выконваць усю асноўную працу, гэта значыць дадаваць выбраныя значэння справа ад зялёных вочак. Для гэтага клікніце правай кнопкай мышы па ўкладцы ліста з выпадальнымі спісамі і абярыце каманду Зыходны код. Устаўце наступны код у акно рэдактара Visual Basic, якое адкрыецца:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then 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. Вертыкальны

Тое ж, што і ў папярэдняй версіі, але новыя выбраныя значэння дадаюцца не справа, а ўнізе:

Робіцца гэта сапраўды гэтак жа, але код макраса апрацоўшчыка трохі змяняецца:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:F2")) Is Nothing And Target.Cells.Count = 1 Then 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. З назапашваннем у адной ячэйцы

У гэтым варыянце назапашванне адбываецца ў той жа вочку, дзе знаходзіцца выпадальны спіс. Выбраныя элементы падзяляюцца любым зададзеным сімвалам (напрыклад, коскай):

Выпадальныя спісы ў зялёных вочках ствараюцца цалкам стандартным спосабам, як і ў папярэдніх спосабах. Уся праца выконваецца, зноў жа, макрасам у модулі ліста:

Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Not Intersect(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Then 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 Len(newVal) = 0 Then Target.ClearContents Application.EnableEvents = True End If Канец пад  

Пры жаданні вы можаце замяніць знак-падзельнік (коску) у 9-м радку кода на свой (напрыклад, прабел або кропку з коскай).

  • Як стварыць просты выпадальны спіс у ячэйцы ліста Excel
  • Выпадальны спіс са зместам
  • Выпадны спіс з дададзенымі адсутнымі параметрамі
  • Што такое макрасы, як імі карыстацца, куды ўставіць код макрасаў у Visual Basic

Пакінуць каментар