Çoklu seçimli açılır liste

Bir Excel sayfasındaki klasik açılır liste harikadır, ancak sunulan kümeden yalnızca bir seçeneği seçmenize izin verir. Bazen bu tam olarak istediğiniz şeydir, ancak kullanıcının seçim yapabilmesi gereken durumlar vardır. biraz listeden öğeler.

Böyle bir çoklu seçim listesinin birkaç tipik uygulamasına bakalım.

Seçenek 1. Yatay

Kullanıcı açılır listeden öğeleri tek tek seçer ve bunlar değiştirilmekte olan hücrenin sağında görünür ve otomatik olarak yatay olarak listelenir:

Bu örnekte C2:C5 hücrelerindeki açılır listeler standart bir şekilde oluşturulur, yani

  1. C2:C5 hücrelerini seçin
  2. sekme veya menü Veri bir takım seç veri Doğrulama
  3. açılan pencerede bir seçenek belirleyin Liste ve bir aralık olarak belirtin Kaynak A1:A8 listesi için kaynak verileri içeren hücreler

Ardından, tüm ana işleri yapacak olan sayfa modülüne bir makro eklemeniz, yani yeşil hücrelerin sağına seçilen değerleri eklemeniz gerekir. Bunu yapmak için, açılır listeler içeren sayfa sekmesine sağ tıklayın ve komutu seçin. Kaynak kodu. Açılan Visual Basic düzenleyici penceresine aşağıdaki kodu yapıştırın:

Private Sub Worksheet_Change(ByVal Target As Range) Hatada Devam Ediyor Eğer Kesişmiyorsa Sonraki(Target, Range("C2:C5")) Hiçbir Şey Ve Target.Cells.Count = 1 Sonra Application.EnableEvents = False If Len(Target.Offset) (0, 1)) = 0 Sonra Target.Offset(0, 1) = Target Else Target.End(xlToRight).Offset(0, 1) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Gerekirse, bu kodun ikinci satırındaki C2:C5 açılır listelerinin hassas aralığını kendinizinkiyle değiştirin.

Seçenek 2. Dikey

Önceki sürümdekiyle aynı, ancak yeni seçilen değerler sağa değil, alta eklenir:

Tam olarak aynı şekilde yapılır, ancak işleyici makro kodu biraz değişir:

Private Sub Worksheet_Change(ByVal Target As Range) Hatada Devam Ediyor Eğer Kesişmiyorsa Sonraki(Target, Range("C2:F2")) Hiçbir Şey Ve Target.Cells.Count = 1 Sonra Application.EnableEvents = False If Len(Target.Offset) (1, 0) = 0 Sonra Target.Offset(1, 0) = Başka Hedef Hedef.End(xlDown).Offset(1, 0) = Target End If Target.ClearContents Application.EnableEvents = True End If End Sub  

Yine gerekirse, bu kodun ikinci satırında C2:F2 açılır listelerinin hassas aralığını kendinizinkiyle değiştirin.

Seçenek 3. Aynı hücrede birikim ile

Bu seçenekte birikim, açılır listenin bulunduğu hücrede gerçekleşir. Seçilen öğeler, verilen herhangi bir karakterle ayrılır (örneğin, virgül):

Yeşil hücrelerdeki açılır listeler, önceki yöntemlerde olduğu gibi tamamen standart bir şekilde oluşturulur. Tüm işler yine sayfa modülündeki bir makro tarafından yapılır:

Özel Alt Worksheet_Change(ByVal Target As Range) Hata Durumunda Sonraki Devam Ediyor If Not Intersect(Hedef, Menzil("C2:C5")) Hiçbir Şey Ve Target.Cells.Count = 1 Sonra Application.EnableEvents = False newVal = Target Application.Undo oldval = Hedef If Len(oldval) <> 0 Ve oldval <> newVal Sonra Target = Target & "," & newVal Else Target = newVal End If Len(newVal) = 0 Sonra Target.ClearContents Application.EnableEvents = True End If Aboneliği Sonlandır  

İsterseniz, 9. kod satırındaki ayırıcı karakteri (virgül) kendi karakterinizle (örneğin boşluk veya noktalı virgül) değiştirebilirsiniz.

  • Excel sayfası hücresinde basit bir açılır liste nasıl oluşturulur
  • İçeriğe sahip açılır liste
  • Eksik seçeneklerin eklendiği açılır liste
  • Makro nedir, nasıl kullanılır, Visual Basic'te makro kodu nereye eklenir

Yorum bırak