Eğitim ComboBox nedir? Özellikleri Nelerdir

arschimet

Destek Ekibi
Kullanıcı Bilgileri
Katılım
12 Ocak 2022
Mesajlar
249
Aldığı beğeni
560
Excel Versiyonu
Office 2013 TR
Konuyu Başlatan
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 SATIR açılır.
Ş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.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Kodu çalıştırıp Userformunuzun üzerindeki ComboBox1 isimli ComboBox'ı tıkladığınızda; aşağıdaki şekilde görünecektir.

comboboxadditem.JPG

Ş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.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Bu kodlama parçası sonucunda ComboBox DropButton tıklandığında aşağıdaki görüntüyü elde edeceksiniz.

comboboxrowsource.JPG

Farklı bir ComboBox doldurma yöntemi ise Array kullanımıdır. Bunun için UserForm_Initialize olayına önceki kodları silip aşağıdaki kodları yazın.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Şimdi Userformu açıp ComboBox1 drop butonunu tıkladığımızda aşağıdaki şekilde bir görüntü elde edeceğiz.

combooxarray.JPG

Görüldüğü üzere combobox içerisine liste verilerini yüklemenin birden fazla yolu mevcut. Bu vba kodlama sırasında unutmamamız gereken bir şey aslında. Her ne yaparsak ne kodlarsak kodlayalım bunun birden fazla yolu olduğu unutulmamalıdır.

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 SATIR sayısının ayarını yapabilirsiniz. Ancak görünümün bozulmaması için görünür SATIR sayısını abartmamamız gerekiyor.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

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


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:

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.


Verilerinizin nereden başlayacağını biliyor fakat toplamda kaç adet olduğunu ve nerede sonlandığını bilmiyorsanız, RowSource olayını uzun tutabilirsiniz.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.

Ancak bu durumda verilerinizin 32000 'den az olması karşısında ComboBox kaydırma çubuğu ile bir sürü boş SATIR 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 :

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.


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.

fmMatchEntryNone ile ise hiçbir aramaya gitmeyecek sizin tüm verinizi girmenize müsaade edecektir.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
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.

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.

Bu bilgileri derleyip sizlerle paylaşmamıza müsaade ettiği için;
Syn Tarkan VURAL hocamıza çok teşekkür ederiz.

 
Son düzenleme:

Konuyu okuyanlar

Üst