Meslektaşlarımdan biri, Excel'de bir açılır listede birden çok seçim yapmanın mümkün olup olmadığını sordu.
Bir açılır liste oluşturduğunuzda, yalnızca bir seçim yapabilirsiniz. Başka bir öğe seçerseniz, ilki yeni seçimle değiştirilir.
Seçimlerin hücrede zaten mevcut olan değere ekleneceği şekilde aynı açılır menüden çoklu seçimler yapmak istedi.
Aşağıdaki resimde gösterildiği gibi bir şey:
Excel'in yerleşik özellikleriyle bunu yapmanın hiçbir yolu yoktur.
Tek yol, bir seçim yaptığınızda çalışan ve seçilen değeri mevcut değere ekleyen bir VBA kodu kullanmaktır.
Videoyu İzle - Bir Excel Açılır Listesinden Birden Çok Öğe Nasıl Seçilir
Açılır Listede Çoklu Seçim Nasıl Yapılır?
Bu derste, bir Excel açılır listesinde (tekrarlı ve tekrarsız) çoklu seçimlerin nasıl yapıldığını göstereceğim.
Bu, bu sitedeki en popüler Excel eğitimlerinden biri olmuştur. Bir sürü benzer soru aldığım için bu eğitimin sonunda bir SSS bölümü oluşturmaya karar verdim. Bu yüzden, bunu okuduktan sonra herhangi bir sorunuz varsa, lütfen önce SSS bölümüne bakın.Birden çok seçime izin veren bir açılır liste oluşturmanın iki bölümü vardır:
- Açılır liste oluşturma.
- VBA kodunu arka uca ekleme.
Excel'de Açılır Liste Oluşturma
Excel'de bir açılır liste oluşturma adımları şunlardır:
- Açılır listenin görünmesini istediğiniz hücreyi veya hücre aralığını seçin (bu örnekte C2).
- Veri -> Veri Araçları -> Veri Doğrulama'ya gidin.
- Veri Doğrulama iletişim kutusunda, ayarlar sekmesinde, Doğrulama Kriterleri olarak 'Liste'yi seçin.
- Kaynak alanında, açılır menüden istediğiniz öğeleri içeren hücreleri seçin.
- Tamam'ı tıklayın.
Şimdi, C2 hücresinde, A2:A6'daki öğe adlarını gösteren bir açılır liste bulunur.
Şu andan itibaren, her seferinde bir öğe seçebileceğiniz bir açılır listemiz var (aşağıda gösterildiği gibi).
Bu açılır menüyü birden fazla seçim yapmamıza izin vermek için etkinleştirmek için VBA kodunu arka uca eklememiz gerekiyor.
Bu öğreticinin sonraki iki bölümü, açılır listede (tekrarlı ve tekrarsız) birden çok seçime izin vermek için size VBA kodunu verecektir.
Açılır Listede Çoklu Seçimlere izin vermek için VBA Kodu (tekrarlı)
Aşağıda, açılır listeden (seçimde tekrarlara izin veren) birden fazla öğe seçmemizi sağlayacak Excel VBA kodu verilmiştir:
Private Sub Worksheet_Change(ByVal Target As Range) ' https://trumpexcel.com adresinden Sumit Bansal ile Kod ' Excel'de Açılır Listede birden fazla seçim yapmak için Dim Oldvalue As String Dim Newvalue As String On Error Exitsub If Target.Address'e Git = "$C$2" Sonra Target.SpecialCells(xlCellTypeAllValidation) Hiçbir Şey Değilse O Zaman Exitsub Else'e Git: If Target.Value = "" Sonra Git Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.Geri Al Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Şimdi bu kodu VB Editor'daki bir modüle yerleştirmeniz gerekiyor (aşağıda 'VBA kodunu nereye koyacaksınız' bölümünde gösterildiği gibi).
Bu kodu arka uca yerleştirdiğinizde (bu eğitimde daha sonra ele alınacaktır), açılır menüde (aşağıda gösterildiği gibi) birden çok seçim yapmanıza olanak tanır.
Bir öğeyi bir kereden fazla seçerseniz, tekrar girileceğini unutmayın (tekrarlamaya izin verilir).
Kendiniz Deneyin… Örnek Dosyayı İndirin
Açılır Listede Çoklu Seçimlere izin vermek için VBA Kodu (tekrar olmadan)
Pek çok insan, bir açılır listeden tekrar etmeden birden fazla öğe seçmek için kodu soruyor.
Tekrar olmaması için bir öğenin yalnızca bir kez seçilebilmesini sağlayacak kod:
Private Sub Worksheet_Change(ByVal Target As Range) 'Code by Sumit Bansal from https://trumpexcel.com ' Excel'de bir Açılır Listede birden fazla seçime izin vermek için (tekrar etmeden) Eski Değeri String Olarak Dim Dim Newvalue As String Application.EnableEvents = Hatada Doğru Exitsub'a Git If Target.Address = "$C$2" If Target.SpecialCells(xlCellTypeAllValidation) Hiçbir Şey Değilse O Zaman Exitsub'a Git Else: If Target.Value = "" Sonra Git Exitsub Else Application.EnableEvents = False Newvalue = Target. Value Application.Undo Oldvalue = Target.Value Oldvalue = "" ise Target.Value = Newvalue Else InStr(1, Oldvalue, Newvalue) = 0 ise Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub
Şimdi bu kodu VB Editor'daki bir modüle yerleştirmeniz gerekiyor (bu öğreticinin sonraki bölümünde gösterildiği gibi).
Bu kod, açılır listeden birden fazla öğe seçmenize olanak tanır. Ancak, bir öğeyi yalnızca bir kez seçebileceksiniz. Tekrar dener ve seçerseniz, hiçbir şey olmaz (aşağıda gösterildiği gibi).
Kendiniz Deneyin… Örnek Dosyayı İndirin
VBA Kodunu Nereye Koymalı
Bu kodu excel'de kullanmaya başlamadan önce, aşağı açılır seçimde herhangi bir değişiklik olduğunda tetiklenecek şekilde arka uca koymanız gerekir.
VBA kodunu Excel'in arka ucuna yerleştirmek için aşağıdaki adımları izleyin:
- Geliştirici Sekmesine gidin ve Visual Basic'e tıklayın (klavye kısayolunu da kullanabilirsiniz - Alt + F11). Bu, Visual Basic Düzenleyicisini açacaktır.
- Solda bir Proje Gezgini bölmesi olmalıdır (eğer orada değilse, görünür hale getirmek için Control + R tuşlarını kullanın).
- Açılır listenin bulunduğu Çalışma Sayfası Adına (sol bölmede) çift tıklayın. Bu, o çalışma sayfası için kod penceresini açar.
- Kod penceresinde yukarıdaki kodu kopyalayıp yapıştırın.
- VB Düzenleyiciyi kapatın.
Şimdi açılır menüye geri dönüp seçim yaptığınızda, birden fazla seçim yapmanıza izin verecektir (aşağıda gösterildiği gibi):
Kendiniz Deneyin… Örnek Dosyayı İndirin
Not: Bunu yapmak için bir VBA kodu kullandığımızdan, çalışma kitabını bir .xls veya .xlsm uzantısıyla kaydetmeniz gerekir.
Sık Sorulan Sorular (SSS)
Bu bölümü, bu öğretici ve VBA kodu hakkında en çok sorulan soruların bazılarını yanıtlamak için oluşturdum. Herhangi bir sorunuz varsa, önce bu sorgu listesini gözden geçirmenizi rica ediyorum.
S: VBA kodunda, işlevsellik yalnızca C2 hücresi içindir. Diğer hücreler için nasıl alabilirim? Cevap: Bu çoklu seçim açılır menüsünü diğer hücrelerde almak için arka uçtaki VBA kodunu değiştirmeniz gerekir. Bunu C2, C3 ve C4 için almak istediğinizi varsayalım, kodda aşağıdaki satırı değiştirmeniz gerekir: If Target.Address = "$C$2" Sonra bu satırla: If Target.Address = "$C$2" Veya Target.Address = "$C$3" Veya Target.Address = "$C$4" O zaman
S: 'C' sütununun tamamında birden çok açılır menü oluşturmam gerekiyor. Bunu, çoklu seçim işlevine sahip sütunlardaki tüm hücreler için nasıl alabilirim? Cevap: Bir sütunun tamamındaki açılır menülerde birden çok seçimi etkinleştirmek için koddaki aşağıdaki satırı değiştirin: If Target.Address = "$C$2" Sonra bu satırla: If Target.Column = 3 Sonra Benzer satırlarda, eğer bu işlevi C ve D sütunlarında istiyorsanız, aşağıdaki satırı kullanın: Eğer Target.Column = 3 veya Target.Column = 4 O zaman
S: Arka arkaya birden çok açılır menü oluşturmam gerekiyor. Bunu nasıl yapabilirim? Cevap: Bir satırda birden fazla seçim içeren açılır listeler oluşturmanız gerekiyorsa (ikinci satır diyelim), aşağıdaki kod satırını değiştirmeniz gerekir: If Target.Address = "$C$2" Ardından bu satırla: Eğer Target.Row = 2 O Zaman Benzer şekilde, bunun birden fazla satır için (ikinci ve üçüncü satır diyelim) çalışmasını istiyorsanız, bunun yerine aşağıdaki kod satırını kullanın: Eğer Target.Row = 2 veya Target.Row = 3 ise
S: Şu anda çoklu seçimler virgülle ayrılmış durumda. Bunları boşlukla (veya başka bir ayırıcıyla) ayırmak için bunu nasıl değiştirebilirim. Cevap: Bunları virgül dışında bir ayırıcıyla ayırmak için, aşağıdaki VBA kodu satırını değiştirmeniz gerekir: Target.Value = Oldvalue & ", " & Newvalue bu VBA kodu satırıyla: Target.Value = Oldvalue & " " & Yenideğer Benzer şekilde, virgülü | gibi başka bir karakterle değiştirmek isterseniz, aşağıdaki kod satırını kullanabilirsiniz: Target.Value = Oldvalue & "| " & Newvalue
S: Her seçimi aynı hücrede ayrı bir satırda alabilir miyim? Cevap: Evet yapabilirsiniz. Bunu elde etmek için, aşağıdaki VBA kodu satırını değiştirmeniz gerekir: Target.Value = Oldvalue & ", " & Newvalue bu kod satırıyla: Target.Value = Oldvalue & vbNewLine & Newvalue vbNewLine aynı hücreye yeni bir satır ekler . Bu nedenle, açılır menüden bir seçim yaptığınızda, yeni bir satıra eklenecektir.
S: Korumalı bir sayfada çoklu seçim işlevini çalıştırabilir miyim? Cevap: Evet yapabilirsiniz. Bunu yapmak için iki şey yapmanız gerekir: Aşağıdaki satırı koda ekleyin (DIM ifadesinin hemen ardından): Me.Protect UserInterfaceOnly:=True İkinci olarak, tüm sayfayı korurken, çoklu seçim işlevine sahip açılır listeye sahip hücrelerin kilitli olmadığından emin olmanız gerekir. İşte bunun nasıl yapılacağına dair bir eğitim: Excel'de Hücreleri Kilitle