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.

Excel

 

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

 

Excel

Ş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

Excel

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

Bir yanıt yazın

Avatar placeholder

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.