Çox seçimli açılan siyahı

Excel vərəqindəki klassik açılan siyahı əladır, lakin o, təqdim olunan dəstdən yalnız birini seçməyə imkan verir. Bəzən bu tam olaraq istədiyiniz şeydir, lakin istifadəçinin seçə bilməsi lazım olan vəziyyətlər var bir siyahıdan elementlər.

Belə bir çox seçimli siyahının bir neçə tipik tətbiqinə baxaq.

Seçim 1. Horizontal

İstifadəçi açılan siyahıdan elementləri bir-bir seçir və onlar dəyişdirilən xananın sağında görünür, avtomatik olaraq üfüqi olaraq siyahıya alınır:

Bu nümunədə C2:C5 xanalarında açılan siyahılar standart şəkildə yaradılmışdır, yəni

  1. C2:C5 xanalarını seçin
  2. nişanı və ya menyu Tarix komanda seçin Məlumatların doğrulanması
  3. açılan pəncərədə bir seçim seçin siyahı və diapazon kimi təyin edin mənbə A1:A8 siyahısı üçün mənbə məlumatları olan xanalar

Sonra vərəq moduluna bütün əsas işləri görəcək, yəni seçilmiş dəyərləri yaşıl xanaların sağına əlavə edəcək bir makro əlavə etməlisiniz. Bunu etmək üçün, açılan siyahıları olan vərəq sekmesini sağ vurun və əmri seçin Mənbə kodu. Aşağıdakı kodu açılan Visual Basic redaktoru pəncərəsinə yapışdırın:

Private Sub Worksheet_Change(ByVal Target As Range) Xəta üzrə Davam Et Kəsişmədikdə Sonrakı(Hədəf, Diapazon("C2:C5")) Heç Nə Və Hədəf Deyil.Cells.Count = 1 O zaman Application.EnableEvents = False Əgər Len(Target.Offset) (0, 1)) = 0 Sonra Hədəf.Offset(0, 1) = Başqa Hədəf Hədəf.End(xlToRight).Offset(0, 1) = Hədəf Sonu Əgər Hədəf.ClearContents Application.EnableEvents = Hədəf Sondursa  

Lazım gələrsə, bu kodun ikinci sətirindəki C2:C5 açılan siyahılarının həssas diapazonunu özünüzlə əvəz edin.

Seçim 2. Şaquli

Əvvəlki versiyada olduğu kimi, lakin yeni seçilmiş dəyərlər sağa deyil, aşağıya əlavə olunur:

Bu, tamamilə eyni şəkildə edilir, lakin işləyicinin makro kodu bir qədər dəyişir:

Private Sub Worksheet_Change(ByVal Target As Range) Xəta üzrə Davam Et Kəsişmədikdə Sonrakı(Hədəf, Diapazon("C2:F2")) Heç Nə Və Hədəf Deyildir.Cells.Count = 1 O zaman Application.EnableEvents = False Əgər Len(Target.Offset) (1, 0)) = 0 Sonra Hədəf.Ofset(1, 0) = Başqa Hədəf Hədəf.End(xlDown).Offset(1, 0) = Hədəf.ClearContents Application.EnableEvents = Həqiqi Son Əgər Son Alt  

Yenə də, lazım gələrsə, bu kodun ikinci sətirində C2:F2 açılan siyahılarının həssas diapazonunu özünüzlə əvəz edin.

Variant 3. Eyni hüceyrədə yığılma ilə

Bu seçimdə yığılma açılan siyahının yerləşdiyi eyni xanada baş verir. Seçilmiş elementlər hər hansı bir simvolla ayrılır (məsələn, vergül):

Yaşıl xanalarda açılan siyahılar əvvəlki üsullarda olduğu kimi tamamilə standart şəkildə yaradılır. Bütün işlər yenidən vərəq modulunda makro ilə edilir:

Private Sub Worksheet_Change(ByVal Target As Range) Xəta üzrə Davam Et Kəsişməsə Sonrakı(Hədəf, Range("C2:C5")) Heç Birşey Deyil Və Hədəfdir.Cells.Count = 1 Sonra Application.EnableEvents = False newVal = Hədəf Tətbiqi Geri Al. oldval = Hədəf Əgər Len(oldval) <> 0 Və oldval <> newVal Sonra Hədəf = Hədəf & "," & newVal Else Hədəf = newVal Sonu Əgər Len(newVal) = 0 olarsa, Target.ClearContents Application.EnableEvents = Həqiqi Sondursa Son Alt  

İstəsəniz, kodun 9-cu sətirindəki ayırıcı simvolu (vergülü) öz simvolunuzla (məsələn, boşluq və ya nöqtəli vergül) əvəz edə bilərsiniz.

  • Excel hesabatı hüceyrəsində sadə açılan siyahı necə yaradılır
  • Məzmunu olan açılan siyahı
  • Çatışmayan seçimlərlə açılan siyahı əlavə edildi
  • Makrolar nədir, onlardan necə istifadə olunur, Visual Basic proqramında makro kodu hara daxil etmək olar

Cavab yaz