VBA Liste Kutusu - Seçili Öğe

Bu makale, Excel VBA'da bir Liste Kutusunda seçilen öğeyle nasıl çalışılacağını gösterecektir.

Liste Kutuları büyük ölçüde VBA formlarında kullanılır, ancak Excel çalışma sayfanızda da kullanılabilir. Kullanıcılara, bir veya daha fazlasının seçebileceği bir seçenekler listesi gösterirler.

VBA Formunda Liste Kutusu Oluşturma

VBA formunda bir liste kutusu oluşturmak için önce UserForm'u oluşturmamız gerekiyor.

Formunuzu oluşturduktan sonra, araç kutusundaki Liste Kutusu denetimini seçin ve ardından formunuzda bir liste kutusu oluşturmak için sürükleyin.

Liste Kutusuna değer ekleme

Formun Initialize olayına aşağıdaki kodu yazın. Liste Kutusu, Excel Çalışma Sayfanızdaki bir Hücre Aralığında depolanan değerleri alacaktır.

123456 Özel Alt UserForm_Initialize()Aralık Olarak KarartmaAralıktaki Her Rng İçin("A1:A50")Me.lstState.AddItem rng.Valuesonraki zilAlt Bitiş

Formu çalıştırdığımızda aşağıdaki resimde gösterildiği gibi liste kutusu görüntülenecektir:

Liste Kutusundan Değer Seçme

Varsayılan olarak, bir kullanıcı formundaki Liste Kutusunda tek bir değer seçilebilir. Ancak bu, liste kutusunun Çoklu Seçim özelliği değiştirilerek değiştirilebilir.

Seçmek için liste kutusuna tıklayın ve ardından Özellikler penceresinde Çoklu Seçim Özelliğini şuradan değiştirin: 0-frmMultiSelectSingle ile 1-frmMultiSelectMulti.

Artık formu çalıştırdığımızda List Box içerisinde birden fazla seçenek işaretleyebiliyoruz.

Seçeneği değiştirirsek 2-frmMultiSelectGenişletilmiş, değerlerden birini seçebileceğimiz anlamına gelir ve ardından, SHIFT tuşunu basılı tutarak, listenin altından başka bir değer seçin ve seçilen 2 değer arasındaki tüm öğeler de seçilecektir.

VBA Programlama | Code Generator sizin için çalışıyor!

VBA'da Seçilen Değerlerle Çalışmak

Liste Kutusunda Çoklu Seçim özelliği için kullandığımız seçeneğin türüne bağlı olarak, VBA Kodunda liste kutusunda seçilen değeri veya değerleri kullanmanın birkaç yolu vardır.

Bir Değişkene Değer Atama

kullanabiliriz Güncellemeden sonra Bir değişkene seçilen değeri atamak için liste kutusunun olayı.

Öncelikle form modülünün en üstünde bir modül seviye değişkeni oluşturalım.

Kelimelerin altında, Seçenek Açık, aşağıdaki dize değişkenini oluşturun.

1 Dize olarak strState'i karartın.

Bu değişkeni oluşturduktan sonra, formun arkasındaki koda gitmek için List kutusuna çift tıklayabilir veya VBE Editor'da kod düğmesine tıklayabiliriz.

Liste kutusunun Tıklama Olayı otomatik olarak oluşturulacaktır. seçin Güncellemeden sonra Olay, mevcut Prosedürlerin listesini oluşturur.

After_Update olayına aşağıdaki kodu yazın:

123 Özel Alt lstState_AfterUpdate()strState = Me.lstStateAlt Bitiş

NOT: Gerekli olmadığı için Click olayını silebilirsiniz.

Şimdi, formu çalıştırıp liste kutusuna tıklarsak, seçilen değer değişkende saklanacaktır. Bunu test etmek için koda bir BREAK noktası koyabiliriz.

Şimdi formu çalıştırdığımızda liste kutusuna tıklarsak kod DEBUG moduna geçecek ve kırılma noktamızda duracaktır. Daha sonra kodda bir adım daha ileri gitmek için klavyede F8 tuşuna basarsak, değişken listede seçilen öğeyle doldurulur.

Bu değeri fareyi değişkenin üzerine getirerek görebiliriz.

VEYA

Anında Pencerede değeri görebiliriz.

VBA Kodu Örnekleri Aramaktan Bıktınız mı? AutoMacro'yu deneyin!

Değeri Excel'e Döndürmek için Komut Düğmesi Kullanma

Liste kutusundan seçilen değer veya değerleri Excel'e döndürmek için OK butonunun olması için ilk olarak form üzerinde bir komut butonu oluşturuyoruz.

Komut Düğmesi denetimini seçin ve ardından düğmeyi oluşturmak için formunuzda tıklayıp sürükleyin.

Özellikler penceresinde düğmenin adını şu şekilde değiştirin: cmdTamamtıklayın ve düğmenin Altyazısını ve Hızlandırıcısını değiştirin.

Hızlandırıcının amacı, kullanıcının düğmeyi etkinleştirmek için klavyeyi kullanmasıdır, bu durumda Alt+O düğmeyi etkinleştirirdi.

Komut butonunun çalışması için arkasına kod eklememiz gerekiyor ki butona tıklandığında kod çalışsın. Buna düğmenin Click olayı denir.

Click olayına ulaşmak için formun tasarım görünümündeki butona çift tıklayın. Komut düğmeleri için en yaygın olarak kullanılan olay bu olduğundan, tıklama olayı otomatik olarak oluşturulacaktır.

Komut düğmesinin tıklama olayına aşağıdaki kodu yazın.

123 Özel Alt cmdOK_Click()Aralık("E1") = strStateAlt Bitiş

Kod, ListBox'ın After_Update olayında bildirdiğimiz değişkeni alacak ve değeri Excel'deki Range'e döndürecektir.

Alternatif olarak, bir değişken kullanmadan değeri doğrudan Liste Kutusundan alabiliriz.

123 Özel Alt cmdOK_Click()Aralık("E1") = me.lstStateAlt Bitiş

Formu çalıştırdığımızda OK butonuna tıkladığımızda seçili değer Excel'e döndürülecektir.

Birden Çok Değer Seçme

Liste kutusunun çoklu seçim özelliğini listede birden fazla değer seçmemize izin veren 1 veya 2 olarak ayarladıysak, bu değerleri seçme kodu biraz farklıdır.

NS Güncellemeden sonra liste kutusundaki değerler seçilirken artık olay tetiklenmiyor - bu nedenle bu olayı kullanamıyoruz.

Yine de komut düğmesi tıklama olayını kullanabiliriz, ancak bunları Excel'e döndürmek için liste kutusunda seçilen değerler arasında döngü oluşturmamız gerekir.

Komut düğmesinde Click olayı, aşağıdaki kodu yazın.

12345678910 Özel Alt cmdOK_Click()Dim x Tamsayı OlarakAralık("E1").Seçx = 0 için Me.lstState.ListCount - 1Me.lstState.Selected(x) = True iseActiveCell = Me.lstState.List(x)ActiveCell.Offset(1, 0).SeçBitirSonraki xAlt Bitiş

Artık formu çalıştırdığımızda Excel sayfasına sadece seçilen değerler dönecektir.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave