EXCEL VBA COMBOBOX

 


EXCEL VBA COMBOBOX NEDİR?

Excel VBA ComboBox, Excel makrolarında (VBA) etkileşimli açılır menüler oluşturmak için kullanılan bir denetimdir. Kullanıcıların önceden tanımlanmış seçenekler listesinden bir seçeneği seçmesine veya özel bir değer girmesine olanak tanır. ComboBox, çalışma sayfalarına veya Kullanıcı Formlarına eklenebilir ve veri girişi, kullanıcı arayüzleri ve form tasarımı için yaygın olarak kullanılır.


Bir örneğe bakalım. Bu örnekte, VBA'da doğrudan kodlama kullanarak bir ComboBox'ın nasıl oluşturulacağını göreceğiz. VBA ComboBox belirtilen bir çalışma sayfasına eklenecek ve seçeneklerle doldurulacaktır.

VBA ComboBox - 1

CreateComboBoxDirectCoding alt rutinini çalıştırarak, belirtilen çalışma sayfasında belirtilen seçeneklerle bir VBA ComboBox oluşturulacaktır.

VBA ComboBox - 2

ÖNEMLİ NOKTALAR

  • VBA ComboBox, kullanıcının seçimi veya girdisi için açılır menüler oluşturmak için kullanılan bir denetimdir.
  • VBA ComboBox'taki öğeleri Clear metodunu kullanarak temizleyebilirsiniz.
  • VBA ComboBox ve ListBox görünüm ve davranış olarak farklılık gösterir; VBA ComboBox seçim ve girdiye izin verirken, ListBox listeden seçim yapmayı destekler.
  • VBA ComboBox'a AddItem kullanarak, List özelliğine bir dizi atayarak veya RowSource olarak bir hücre aralığı belirterek değerler ekleyebilirsiniz.

VBA ComboBox Oluşturmanın En İyi 2 Yolu

1 – Doğrudan Kodlama Kullanımı

Bu yaklaşımda, ComboBox denetiminin oluşturulmasını doğrudan VBA koduyla kodlarsınız ve ona öğeler eklersiniz. Aşağıdaki adımları takip edebilirsiniz:

  1. Alt + F11 tuşlarına basarak VBA Editörünü açın.

  2. Proje Gezgini'nde projeye sağ tıklayıp "Ekle" → "Modül" seçeneğini belirleyerek yeni bir modül ekleyin.

  3. Çalışma sayfası ve ComboBox nesnesi için değişkenleri bildirin:

  4. ComboBox'ın yerleştirileceği çalışma sayfasını ayarlayın.


    Dim ws As Worksheet
    Dim ComboBox As Object


    İstenilen çalışma sayfasını ws değişkenine atamak için Set anahtar sözcüğünü kullanın. Örneğin, Set ws ThisWorkbook.Sheets(“Sheet1”).

  5. Yeni bir ComboBox oluşturun:


     Yeni bir ComboBox nesnesi oluşturmak için çalışma sayfasının “Shapes.AddFormControl” yöntemini kullanın.
     Denetim türünü (örneğin, “xlDropDown”) ve ComboBox'ın boyutlarını ve konumunu belirtin.
     Oluşturulan ComboBox'ı ComboBox değişkenine atayın.

    Örneğin: Set ComboBox = “ws.Shapes.AddFormControl(xlDropDown, Left, Top, Width, Height)”

  6. Özellikleri ayarlayın ve ComboBox'ı görünür hale getirin:

    ComboBox'ın "ControlFormat" özelliğini, seçenek listesi gibi özellikleri ayarlamak için kullanın. Örneğin, "ComboBox.ControlFormat.List = Array("Option 1", "Option 2", "Option 3")."

     Çalışma sayfasında görünür hale getirmek için ComboBox'ın Görünür özelliğini True olarak ayarlayın.

    Örneğin: "ComboBox.Visible = True"

    Bu kod, doğrudan kodlama kullanarak bir VBA ComboBox oluşturur, çalışma sayfasını ayarlar, VBA ComboBox'a seçenekler ekler ve çalışma sayfasında görünür hale getirir. Kullanıcıların sağlanan seçenekler listesinden seçim yapmasına olanak tanır.

    Excel VBA'da ComboBox Nasıl Oluşturulur - Doğrudan Kodlama Kullanarak - Adım 6a

    Son çıktı şu şekildedir:

  • Avantajları: Bu yöntem, VBA ComboBox'ın oluşturulması ve popülasyonu üzerinde tam kontrol sağlar. Daha programatik bir yaklaşımı tercih ettiğinizde veya belirli koşullara veya veri kaynaklarına göre VBA ComboBox'a dinamik olarak öğeler eklemeniz gerektiğinde uygundur.

2 – UserForm Kullanımı

Bu yaklaşımda, VBA Editör'de bir VBA ComboBox UserForm oluşturursunuz ve bunu araç kutusunu kullanarak görsel olarak tasarlarsınız. İşte adımlar:

  1. Excel çalışma kitabında VBA Düzenleyicisini açmak için ALT + F11 tuşlarına basın.
  2. “Ekle”ye tıklayıp “Kullanıcı Formu”nu seçerek bir Kullanıcı Formu ekleyin.
  3. Araç kutusundan bir ComboBox denetimini UserForm'a sürükleyip bırakın.
  4. ComboBox'ın Name, ListFillRange, ColumnCount gibi özelliklerini Properties penceresini kullanarak özelleştirin.
  5. AddItem metodunu kullanarak veya List özelliğine bir dizi atayarak ComboBox'ı öğelerle doldurmak için VBA kodu yazın.
  6. İstenilen işlevselliği uygulamak için ComboBox olaylarını VBA kodu kullanarak işleyin.

Aşağıdaki örnekte, UserForm açıldığında başlatılır ve VBA ComboBox'a Apple, Banana ve Orange olmak üzere üç seçenek doldurulur.

Excel VBA'da ComboBox Nasıl Oluşturulur - UserForm Kullanılarak - Adım 6a

Kullanıcı VBA ComboBox'tan bir öğe seçtiğinde ComboBox1_Change olayı tetiklenir ve bir ileti kutusu seçilen öğeyi görüntüler.

Excel VBA'da ComboBox Nasıl Oluşturulur - UserForm Kullanılarak - Adım 6b
  • Avantajları: VBA ComboBox'ı oluştururken görsel bir arayüz tercih ettiğinizde ve çalışma zamanında ComboBox'ta dinamik değişikliklere ihtiyaç duymadığınızda uygundur.

Bu yöntem UserForm'u ve VBA ComboBox'ı görsel olarak tasarlamanıza olanak tanır, böylece kontrolleri düzenlemenizi ve özelliklerini ayarlamanızı kolaylaştırır.

Örnekler

Örnek 1 – Doğrudan Kodlamanın Kullanımı

Bu örnekte, doğrudan kodlama kullanarak bir VBA ComboBox denetimi oluşturacağız. Burada ComboBox, yeni oluşturulan ComboBox nesnesine atanan değişkendir ve 'ws', ComboBox'ın yerleştirileceği çalışma sayfasıdır.

  • Adım 1: Önce, “CreateComboBoxDirectCoding” alt rutinini oluşturun ve 'ws' değişkenlerini bir Çalışma Sayfası ve “ComboBox” değişkenlerini bir Nesne olarak bildirin. Bu değişkenler çalışma sayfasına başvuracak ve oluşturulan ComboBox'ı depolayacaktır.
Excel'de VBA ComboBox - Örnek 1 - Adım 1
  • Adım 2: 'ws' değişkenini ComboBox'ı yerleştirmek istediğiniz çalışma sayfasına ayarlayın. “Sheet1”i istediğiniz sayfanın adıyla değiştirin. Bu adım ComboBox'ın ekleneceği belirli çalışma sayfasına bağlantıyı kurar.
Örnek 1 - Adım 2
  • Adım 3: Çalışma sayfasında yeni bir ComboBox şekli oluşturmak için Shapes koleksiyonunun AddFormControl metodunu kullanın . ComboBox'ın kontrol türünü, sol konumunu, üst konumunu, genişliğini ve yüksekliğini belirtmek için xlDropDown, 100, 100, 100, 20 parametrelerini geçirin.

Değerleri (100, 100, 100, 20) gereksinimlerinize göre ayarlayın. Bu adım, ComboBox şeklini çalışma sayfasına belirtilen konum ve boyutlarda ekler.

Örnek 1 - Adım 3
  • Adım 4: ComboBox'a erişmek ve özelliklerini ayarlamak için With ComboBox.ControlFormat bloğunu kullanın. Bu blok ComboBox'ın çeşitli özelliklerini değiştirmenize olanak tanır.
Örnek 1 - Adım 4
  • Adım 5: With ComboBox.ControlFormat bloğu içerisinde .List özelliğini bir dizi seçeneğe ayarlayın.

Array(“Option 1”, “Option 2”, “Option 3”) dizisini ComboBox için istediğiniz seçeneklerle değiştirin. Bu adım ComboBox'ı belirtilen seçeneklerle doldurur.

Örnek 1 - Adım 5
  • Adım 6: ComboBox'ı çalışma sayfasında görünür hale getirmek için ComboBox.Visible özelliğini True olarak ayarlayın.
Örnek 1 - Adım 6
  • Adım 7: Şimdi modülü kaydedin ve VBE'yi kapatın. Şimdi Makro menüsünü açmak için Alt + F8 tuşlarına basın, “CreateComboBoxDirectCoding”i seçin ve 'Çalıştır'a basın.
Örnek 1 - Adım 7
  • Adım 8: Makroyu çalıştırdığınızda, çalışma sayfasında “Seçenek 1”, “Seçenek 2” ve “Seçenek 3”ün bulunduğu açılır menüyü bulacağınız birleşik kutuyu göreceksiniz.
Excel'de VBA ComboBox - Örnek 1 - Adım 8

Örnek 2 – UserForm Kullanımı

Bu örnekte, VBA'da bir UserForm kullanarak bir ComboBox'ın nasıl oluşturulacağını göreceğiz. Bir UserForm'a bir ComboBox denetimi ekleyeceğiz ve onu bir seçenekler listesiyle dolduracağız. Kullanıcının ComboBox'tan bir seçenek seçmesine izin verecektir.

  • Adım 1: Alt+F11 tuşlarına basarak Excel'de VBA düzenleyicisini açın.
Excel VBA ComboBox - Örnek 2 - Adım 1a

Şimdi yeni bir UserForm ekleyin.

Örnek 2 - Adım 1b
  • Adım 2: Yeni UserForm'u ekledikten sonra bir ComboBox denetimi ekleyin:
Örnek 2 - Adım 2

Araç Kutusu'ndan ComboBox denetimini bulun ve tıklayıp UserForm'a sürükleyin. ComboBox'ın boyutunu ve konumunu istediğiniz gibi ayarlayın.

  • Adım 3: UserForm kod penceresinde, Tasarım görünümüne geçin veya kod penceresini açmak için UserForm'a çift tıklayın. Kod penceresinde, aşağıdaki kodu ekleyin:

UserForm kod penceresini kapatın.

Örnek 2 - Adım 3
  • Adım 4: Şimdi UserForm'u görüntülemek için kod ekleyelim. Ekle'ye gidin ve yeni bir modül oluşturun ve aşağıdaki kodu girin:
Örnek 2 - Adım 4
  • Adım 5: Modülü kaydedin ve VBE'den çıkın. Şimdi Makro menüsünü açmak için Alt + F8 tuşlarına basın, “ShowUserForm”u seçin ve Çalıştır'a basın.
Örnek 2 - Adım 5
  • Adım 6: “ShowUserForm” komutunu çalıştırdığınızda, ComboBox’ın doldurulduğu UserForm gösterilecek ve ComboBox’tan seçenekleri seçebilirsiniz.
Excel VBA ComboBox - Örnek 2 - Adım 6

VBA'da ComboBox ve DropDownList arasındaki fark

  • ComboBox Açılır Liste: Bu stil, kullanıcıların açılır listeden bir öğe seçmesine veya ComboBox'a yazarak özel bir değer girmesine olanak tanır. Hem seçim hem de girdi için esneklik sağlar.
  • DropDownList: Bu stil, seçimi önceden tanımlanmış listeyle sınırlar ve kullanıcıların özel bir değer girmesine izin vermez. Yalnızca listeden bir öğe seçebilirler.

Temel fark, özel bir değer girme yeteneğinde yatar. VBA ComboBox Dropdown stili hem seçime hem de girişe izin verirken, DropDownList stili seçimi yalnızca önceden tanımlanmış listeyle sınırlar.

Dikkat Edilmesi Gereken Önemli Noktalar

  • ComboBox denetiminin, VBA ComboBox Adı, VBA ComboBox ListeDolumAralığı, VBA ComboBox SütunSayısı ve VBA ComboBox SatırKaynağı gibi özelleştirilebilen çeşitli özellikleri vardır.
  • ComboBox'ların Change, Click ve DropButtonClick gibi ilişkili olayları vardır. Bu olaylar, kullanıcının ComboBox ile etkileşimlerine dayalı eylemleri tetikleyebilir.
  • VBA ComboBox'a öğeleri “VBA ComboBox AddItem” metodunu kullanarak manuel olarak veya VBA ComboBox RowSource özelliğini kullanarak bir hücre aralığından değerler atayarak dinamik olarak ekleyebilirsiniz.
  • Seçilen öğeyi VBA ComboBox'tan almak için Value özelliğini kullanabilirsiniz. Seçilen öğenin değerini bir dize olarak döndürür.

1. Excel VBA'da ComboBox'tan değer nasıl alınır?

Excel'de bir VBA ComboBox'tan değer almak için ComboBox'ın Value özelliğini kullanabilirsiniz. İşte bir örnek:

Dim selectedValue As String
selectedValue = ComboBox1.Value
 
Bu örnekte, ComboBox'tan seçilen değer "selectedValue" değişkeninde saklanır.

2. VBA'da ComboBox'taki öğeler nasıl temizlenir?

VBA ComboBox'taki öğeleri temizlemek için Clear metodunu kullanabilirsiniz. İşte bir örnek:

ComboBox1.Clear

ComboBox'taki tüm öğeleri kaldıracak ve onu boş bir duruma sıfırlayacaktır.

3. VBA'da ComboBox ile ListBox arasındaki fark nedir?

VBA ComboBox ile VBA'daki ListBox arasındaki temel fark görünüm ve davranışlarında yatar:

• ComboBox: ComboBox, bir metin kutusunu açılır listeyle birleştiren bir denetimdir. Kullanıcılar listeden bir öğe seçebilir veya metin kutusuna yazarak özel bir değer girebilir. Hem seçime hem de girdiye izin verir.

• ListBox: Öte yandan, bir ListBox, bir öğe listesi görüntüleyen bir denetimdir. Kullanıcılar, listeden bir veya daha fazla öğeyi tıklayarak seçebilir. Öncelikle seçim için bir seçenekler listesi görüntülemek için kullanılır.

4. VBA'da ComboBox'a nasıl değer eklenir?

Bir VBA ComboBox'a değer eklemek için iki seçeneğiniz vardır:

“.AddItem” yöntemini kullanma:
• Sözdizimi: ComboBox.AddItem Item, Index
• Örnek : ComboBox.AddItem “Seçenek 1”

Bir dizi ile “.List” özelliğini kullanma:
• Sözdizimi: ComboBox.List = Array(Item1, Item2, Item3, …)
• Örnek: ComboBox.List = Array(“Seçenek 1”, “Seçenek 2”, “Seçenek 3”)
Dizide virgülle ayrılmış değerler sağlayın.

Yorum Gönder

DT KARİYER KPSS Dünyasına Hoş Geldiniz
Sevgili dostum nasıl yardımcı olabilirim?
Bu alana yazınız...