Паѓачка листа со повеќекратно избирање

Класичната паѓачка листа во лист на Excel е одлична, но ви овозможува само да изберете една опција од презентираниот сет. Понекогаш тоа е токму она што го сакате, но има ситуации кога корисникот треба да може да избере некои елементи од списокот.

Ајде да погледнеме неколку типични имплементации на таква листа со повеќекратно селектирање.

Опција 1. Хоризонтална

Корисникот избира ставки од паѓачката листа еден по еден, и тие се појавуваат десно од ќелијата што се менува, автоматски се наведени хоризонтално:

Паѓачките списоци во ќелиите C2:C5 во овој пример се креирани на стандарден начин, т.е

  1. изберете ќелии C2:C5
  2. јазиче или мени податоци изберете тим Валидација на податоци
  3. во прозорецот што се отвора, изберете опција листа и наведете како опсег извор ќелии со изворни податоци за списокот A1:A8

Потоа треба да додадете макро во модулот на листот, кој ќе ја изврши целата главна работа, односно ќе додаде избрани вредности десно од зелените ќелии. За да го направите ова, кликнете со десното копче на јазичето на листот со паѓачки списоци и изберете ја командата Изворниот код. Вметнете го следниов код во прозорецот за уредувач на Visual Basic што се отвора:

Приватен под Worksheet_Change(ByVal Target As Range) На грешка Продолжи Следно Ако не се вкрсти(Target, Range("C2:C5")) Is Nothing And 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) На грешка Продолжи Следна Ако не се вкрсти(Target, Range("C2:F2")) Is Nothing And 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) На грешка Продолжи Следна Ако не се вкрсти(Target, Range("C2:C5")) Is Nothing And Target.Cells.Count = 1 Потоа Application.EnableEvents = Неточно newVal = Целна апликација.Undo oldval = Target If Len(oldval) <> 0 And oldval <> newVal Потоа Target = Target & "," & newVal Else Target = newVal End If If Len(newVal) = 0 then Target.ClearContents Application.EnableEvents = True End If Крај под  

Ако сакате, можете да го замените знакот за раздвојување (запирка) во 9-тата линија од кодот со свој (на пример, празно место или точка-запирка).

  • Како да креирате едноставна паѓачка листа во ќелија на лист на Excel
  • Паѓачка листа со содржина
  • Паѓачка листа со додадени опции што недостасуваат
  • Што се макроа, како да ги користите, каде да вметнете макро код во Visual Basic

Оставете Одговор