Excel tablolarında ihtiyacımıza binaen kullandığımız Makro (VBA) lar içindeki UserForm larda en sık kullanılan form araçlarından olan ComboBox üzerinde bazen Excel sayfa isimlerinin listelenmesini bu liste üzerinden seçim yaparak o sayfaya gitmesini de isteyebiliyoruz. Bunun için yapmamız gereken işlemleri aşağıda görebilirsiniz.
Bu arada ComboBox içerisinde sayfaların listelenme işleminin aynısını ListBox lar içinde kullanabilirsiniz.
Bu işlem için halihazırda bir UserFormunuzun ve Bu Form içinde bir ComboBox’ınızın olduğunu düşünerek devam edelim. Sadece bu işlemler için görünen form örneği aşağıdaki gibi olacaktır.
ComboBox Sayfaları Listeleme
Öncelikle Listeleme İşlemi için bir CommandButton oluşturuyoruz ve kodları yazmak için butona çift tıklatıyoruz. Böylelikle her butona tıkladığımızda aşağıdaki işlemleri gerçekleştirecektir. Açılan pencerede
Private Sub CommandButton1_Click()
'Kodları bu bölme giriyoruz.
End Sub
yordamının içerisine aşağıdaki kodları yazıyoruz.
Private Sub CommandButton1_Click() ComboBox1.Clear Dim Sayfa As Worksheet For Each Sayfa In Worksheets ComboBox1.AddItem Sayfa.Name Next End Sub
Şimdi bu yukarıdaki kodu kısaca açıklayalım ki neyi neden yaptığımızı anlayalım. Böylelikle kendinizi daha çok geliştirebileceksiniz.
ComboBox1.Clear işlemi sayfadaki her butona tıklatıldığında öncelikle ComboBox’ın temizlenmesini sağlar. Böylelikle aynı Sayfa isimleri tekrar tekrar ComboBox içerisinde listelenmeyecektir.
Dim Sayfa As Worksheet işlemi ile ise Sayfa adında bir değişken tanımladık. Ancak bu değişkeni tanımlarken Worksheet kodu ile Çalışma Sayfası olduğunu Excel’e belirttik.
For Each Sayfa In Worksheets Bu bir For Each Next döngüsüdür. Öncelikle tanımladığımız Sayfa isimli değişkeni For Each döngüsünde başlattık. Ancak bu döngüde Each seçmemizin sebebi Excel’e özel elamanlar kullanmamızdan kaynaklanmaktadır. Ardından
ComboBox1.AddItem Sayfa.Name kodu ile ComboBox’ımıza Sayfa ismini aldırmış olduk.
Next kodu ile de döngünün başına tekrar gelerek sırasıyla diğer sayfa isimlerini de ComboBox içerisine aldırdık.
Böylelikle kodumuzu sonlandırıp sayfaların hepsini listelemiş olduk. Sırada…
ComboBox üzerinde seçilen sayfalara otomatik gitme
Bir önceki işlemi CommandButon üzerinde gerçekleştirmiştik. Bu işlemi ise ComboBox’ın Change özelliğine yazarak gerçekleştireceğiz.
Private Sub ComboBox1_Change()
'Kodları bu bölme giriyoruz.
End Sub
yordamının içerisine aşağıdaki kodları yazıyoruz.
Private Sub ComboBox1_Change() On Error Resume Next Sheets(ComboBox1.Value).Select End Sub
bu seferde bu yazmış olduğumuz kodları kısaca açıklayalım.
On Error Resume Next yazdığımız bu kod çalıştırdığımız makro da hata oluşmasına engel olmaktadır. Aslında tam olarak hata oluşursa görmezden gel ve devam et demektir diyebiliriz.
Sheets(ComboBox1.Value).Select bu kısımda ise esas kodumuz yer almaktadır. Yani Excel sayfalarından ComboBox1 etiketi ile uyuşan sayfaya git demiş oluyoruz. Ardından bu kodu da kapatıyoruz.
Evet bütün işlemimiz bu kadar. Bu yazımda da elimden geldiği kadarı ile Excel’i daha eline yeni almış olan herkesin anlayabileceği kadar detaylı yazdığım için yazı biraz uzun oldu. Ama aslında çok basit ve sadece iki ayrı kod parçacığı ile halledilebilir bir olay.
Bu yazı ile ilgili hazırladığım videoyu Youtube üzerindeki DEGARADO isimli kanaldan da izleyebilirsiniz.
6 yorum