ComboBox Nedir, Nasıl Kullanılır ?

Makro, formül vb.. şekilde bazı örneklerin paylaşılabileceği alan
Cevapla
Kullanıcı avatarı
ExcelVBA
Site Admin
Mesajlar: 10
Kayıt: Sal Haz 20, 2023 6:12 pm
Lokasyon: İstanbul
Web Sitesi: https://www.excelvba.net
Meslek: Yönetim Kurulu Başkanı (Özel Sektör)
Adınız:
Soyadınız:

ComboBox Nedir, Nasıl Kullanılır ?

Mesaj gönderen ExcelVBA »

ComboBox adlı liste şeklinde açılan kutu, veri listeleme, veri seçme gibi olaylarda VBA nesneleri arasında en sık kullanılan nesnelerden biridir.

Görüntüsü genelde TextBox' a yakındır. DropButtonStyle özelliği değiştirilmediği müddetçe varsayılan görüntüsünde sağ yanda aşağı doğru açılmasını sağlayacak ok buton şeklindedir. Textbox gibi görünmesine rağmen kendinde barındırdığı özellikler sayesinde bir veri katarını AddItem , RowSource gibi özellikleri ile içinde listeleyebiliyor. Bu sayede açma tuşuna bastığınızda içinde listelediği veriler arasında seçme şansınız oluyor.

Nesne içerisine veri girilmedi ise açma butonuna bastığınızda aşağıya doğru boş bir satır açılır.
Resim

Şimdi nesne içerisine birkaç yöntemden biri olan AddItem yöntemi ile 2,3 tane veri girelim :

UserForm kod sayfasını açın ve formun Initialize olayına aşağıdaki kodları ekleyin.

Kod: Tümünü seç

Private Sub UserForm_Initialize()
ComboBox1.AddItem "www.ExcelVBA.Net"
ComboBox1.AddItem "ExceLord"
ComboBox1.AddItem "VBA Makrolar"
End Sub
Kodu çalıştırın. Aldığınız görüntü şu şekilde olacaktır :
Resim

Şimdi diğer bir yöntem olan RowSource ile ComboBox içerisine nasıl veri alınacağını görelim. UserFormu kapatıp Sayfa1 içerisine;
A1 hücresine Excel
A2 hücresine VBA
A3 hücresine Makro
A4 hücresine Fonksiyon
yazın ve UserForm_Initialize olayına önceki kodları silip kodları aşağıdaki gibi ekleyin.

Kod: Tümünü seç

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sayfa1!A1:A4"
End Sub
Bu kodlama parçası sonusunda Combobox DropButton tıklandığında aşağıdaki görüntüyü elde edeceksiniz.

Resim

ComboBox içerisinde onlarca veri olduğunu düşünelim. Bu verileri ekledikten sonra ComboBox DropButton' u tıkladığınızda tüm verileri karşınıza gelmez. Çünkü görünür durumda varsayılan ayarlara göre sadece sekiz veri olacak ve diğerlerini görmeniz için açılan listenin sağ tarafında aşağıya kaydırma çubuğunu hareket ettirmeniz gerekecek. Peki bu varsayılan adeti değiştiremez miyiz ? Elbette. Tek bir satırlık kod ilavesi ile görünmesini istediğiniz satır sayısının ayarını yapabilirsiniz. Ancak görünümün bozulmaması için görünür satır sayısını abartmamamız gerekiyor.

Kod: Tümünü seç

ComboBox1.ListRows = 16

ile görünür satır sayısını 8 'den 16' ya çıkardık. Şimdi DropButton 'a bastığınızda tek seferde 16 satırı da görebilirsiniz.

Resim

RowSource ile ComboBox'a veri alabileceğiniz farklı bir kaç yöntem daha var.
Bunlarda biri hücrelerde tanımlanmış ad ile yapılabilir. Bunun için Ekle - Ad - Tanımla seçeneklerini seçerek Çalışma kitabınızdaki adlar bölümüne bir başlık yazın ve başvuru yerini seçerek verilerinizin olduğu hücreleri işaretleyin , ardından tamam diyerek çıkmış olun. Kodunuzu artık aşağıdaki gibi yazabilirsiniz:

Kod: Tümünü seç

Private Sub UserForm_Initialize()
ComboBox1.ListRows = 16
ComboBox1.RowSource = "veriler"
End Sub
Verilerinizin nereden başlayacağını biliyor fakat toplamda kaç adet olduğunu ve nerede sonlandığını bilmiyorsanız, RowSource olayını uzun tutabilirsiniz.

Kod: Tümünü seç

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sayfa1!A1:A32000"
End Sub
Ancak bu durumda verilerinizin 32000 'den az olması karşısında ComboBox kaydırma çubuğu ile bir sürü boş satır göreceksiniz. Bu pek de göze hoş gelen bir durum olmasa gerek. Verilerin son bulduğu hücreyi kod ile tespit ederek bunun önlemini alabiliriz. Kodumuzda biraz değişiklik yaparak :

Kod: Tümünü seç

Private Sub UserForm_Initialize()
ComboBox1.RowSource = "Sayfa1!a1:a" & Range("a65536").End(xlUp).Row
End Sub
ComboBox MatchEntry özelliği ile ComboBox 'a isim yazmaya başladığınızda ismin otomatik tamamlanma ya da manuel girilme istemine etki edebilirsiniz.
MachEntry özelliğinin 3 olayı vardır.
0- fmMatchEntryFirstLetter
1- fmMatchEntryComplete
2- fmMatchEntryNone

fmMatchEntryFirstLetter ile ComboBox içine yazmaya çalıştığınızda her tuşa basışınızda bastığınız harfleri yanyana yazdırmaya müsaade etmeyecek ve sadece basılı harf ile başlayan veriyi bulmaya çalışacaktır.
fmMatchEntryComplete ile ComboBox içine yazmaya çalıştığınızda her tuşa basışınızda harfleri yanyana yazmaya devam etmenize müsaade edecek ve o harfler ile başlayan veriyi bulmaya çalışarak ComboBox 'ta otomatik tamamlama yoluna gidecektir.
Resim
fmMatchEntryNone ile ise hiçbir aramaya gitmeyecek sizin tüm verinizi girmenize müsaade edecektir.

ComboBox1.Clear ile eklenmiş tüm verilerinizi sliebilirsiniz.
ComboBox1.ColumnHeads = True ile verilerinizin başlık sütun adını alabilirsiniz.
ComboBox1.ListStyle = fmListStyleOption ile verilerin başında seçenek düğmesi görünmesini sağlar
ComboBox1.Style = fmStyleDropDownList ile ComboBox içine veri girmesi iptal edilmiş olup sadece aşağı açılan listeden veri seçilmesine izin verilir.

ComboBox1.ShowDropButtonWhen = fmShowDropButtonWhenFocus ile ComboBox görüntümüzün tamamen TextBox görüntüsüne benzemesini sağlayabiliriz. Sadece ComboBox focus'landığında yani seçildiğinde , DropButton görünür ve aşağı açılan listeyi açmanıza yardımcı olur. Bunu denemek istiyorsanız UserForm üserine eklediğiniz ComboBox yanına örneğin bir TextBox ekleyin ve TextBox'ın TabIndex değerini 0 yapın. Formu çalıştırdığınızda iki tane TextBox göreceksiniz.
Resim
Fakat aslında ComboBox olan nesne seçildiğinde ok işaretinin çıkarak liste seçimi için DropButton'un aktif olduğu görünecek.
Resim
Cevapla
  • Benzer Konular
    Cevaplar
    Görüntüleme
    Son mesaj