Excel’de VBA Programlama (Visual Basic Application) Emine TUNÇEL Kırklareli Üniversitesi, Pınarhisar Meslek Yüksekokulu
Değişken Kapsamı ve Ömrü Değişkenler yazıldıkları yere göre bir kapsama sahiptirler. Yani etkilerini gösterdikleri bir bölgeye sahiptirler. Bir modül fonksiyon ve yordamlardan oluşur. Fonksiyonlar function, yordamlar sub ifadesi ile tanımlanırlar. Bu tanımlar ile modül dediğimiz bütün gerekli olduğu kadar küçük parçaya ayrılmış olur. Değişkenler ya bu küçük parçaların içinde (fonksiyon, yordam) ya da modül düzeyinde hüküm sürerler. Hatta tüm Excel çalışma ortamında da hüküm sürmeleri de mümkündür. Bu amaçla değişkenlerin yazıldıkları yer ve kullanılan tanımlama sözcükleri önemlidir.
Yerel Değişkenler Bu değişkenler yordam ya da fonksiyon içinde Dim ifadesi ile tanımlanan değişkenlerdir. Bu değişkenler yalnızca tanımlanmış olduğu yordam ya da fonksiyon içinde hüküm sürerler. Fonksiyon ya da yordam bittikten sonra değerleri 0 olur Yani yalnızca fonksiyon ya da yordam içinde kullanılabilirler.
Yerel Değişkenler Pr1 yordamı çalıştığında x değişkeni ilk önce 100 değerini alır. Bu yordam içinden pr2 alt yordamı çağrıldığında x değişkeninin değeri 250 olur. Pr3 alt yordamı çağrıldığında x değeri 500 olur. Program akışı tekrar pr1 yordamına döndüğünde x değeri yine 100 olur.
Statik Değişkenler Normal şartlarda herhangi bir değişkene static tanımı uygulanmadığı sürece her değişken kendi yordamı içinde sıfırlanarak hayata başlar. Bu değişken her yordam çağrısında yeniden oluşturulur. Ancak bir değişken static anahtar sözcüğü ile tanımlanırsa bu değişken tanımlandığı yordama ait olmakla birlikte her yordamın yeniden çalıştırılması sırasında yeniden oluşturulmaz. Bir kere oluşturulur ve bu değişken ile işleme devam edilir. Static k as integer Şeklinde tanımlanır.
Statik Değişkenler A değişkeni yanda gösterildiği gibi tanımlandığında yordam her çağrıldığında A1 hücresinde görünen a değişkeninin değeri 5’dir, değişmez. Çünkü her yordam çağrısında değişken yeniden oluşturulur. A değişkeni yanda gösterildiği gibi başına static ifadesi alırsa yordam her çağrıldığında A1 hücresinde görünen a değişkeninin değeri 5’er 5’er artar. Çünkü static değişkenler bir kez oluşturulur, yordam her çağrıldığında tekrar tekrar oluşturulmazlar.
Private (Özel) Değişkenler İçerisinde bulundukları modülün başında Private anahtar sözcüğü ile tanımlanırlar ve modül içerisindeki tüm yordam ve fonksiyonlarda geçerlidirler. Yanda verilen örnekten de anlaşılacağı üzere Private anahtar sözcüğü ile tanımlanan katsayı değişkeni modül içindeki tüm yordamlarda(arttir/azalt) kullanılabiliyor ve değişkenin değeri yordam bittikten sonra sıfırlanmadan bir sonrakine aktarılarak devam ediyor. Ancak bu değişkenlere farklı modüller içerisinden erişilemez.
Public (Genel) Değişkenler Bir değişken Public yolarak tanımlanırsa bulunduğu modül içindeki tüm yordam ve fonksiyonlardan erişilebileceği gibi diğer modüllerden de erişilebilir.
Operatörler Aritmetik Operatörler ^ Üs alma işlemi MOD Kalanı bulma operatörü *, / Çarpma ve bölme işlemleri +, - Toplama ve çıkarma işlemleri & Karakter dizgelerini arka arkaya birleştirmeyi sağlar
Operatörler Karşılaştırma Operatörleri >, >= Büyük veya büyük eşit <, <= Küçük veya küçük eşit = Eşittir <> Eşit değildir yani farklıdır
Operatörler Mantıksal Operatörler AND Mantıksal VE işlemine karşılık gelir ve doğru değer üretebilmesi için her iki mantıksal ifadenin DOĞRU olması gerekir OR Mantıksal YA DA işlemine karşılık gelir ve doğru değer üretebilmesi için her iki mantıksal ifadeden birinin DOĞRU olması yeterlidir. NOT Mantıksal DEĞİL işlemine karşılık gelir ve doğru değeri yanlışa,; yanlış değeri de doğruya dönüştürür.
Koşullu Deyimler İf…Then…Else Belirli bir mantıksal şartın doğru olması durumunda if bloğu, yanlış olması durumunda else bloğu çalışır if şart Then Blok 1 Else Blok 2 End if if şart Then Blok End if if şart1 Then Blok 1 ElseIf şart2 Then Blok 2 ElseIf şart3 Then Blok 3 Else Blok 4 End if
Koşullu Deyimler İf…Then…Else
Koşullu Deyimler İf…Then…Else
Koşullu Deyimler Select Case Select…case kontrol yapısı kendisine gönderilen değeri yorumlayarak o değere ait kod bloğunu çalıştıran kontrol yapısıdır. İf…else if deyiminin bir alternatifi olarak kullanılır. Yazımı ve kurgusu daha kolaydır Select case ifade Case ifade_listesi_1 Blok 1 Case ifade_listesi_2 Blok2 Case else Else durumu End select
Koşullu Deyimler Select Case
Döngü Deyimleri For…Next Belirtilen tekrar sayısına göre VBA deyim bloğunu çalıştırır. For sayaç=baslangic To bitiş step adim . Deyimler bloğu Next sayac
Döngü Deyimleri For…Next Belirtilen tekrar sayısına göre VBA deyim bloğunu çalıştırır.
Döngü Deyimleri For…Next Yandaki çıktıyı veren program kodunu yazalım
Döngü Deyimleri For…Next Yandaki çıktıyı veren program kodunu yazalım
Döngü Deyimleri For Each…Next Belirli bir deyim grubunu bir koleksiyonun her bir öğesi için bir kez çalıştırır. Koleksiyon olarak nitelendirilen nesnelerin tipi hücre olabileceği gibi bir Workbook sayfası, UserForm kontrolü, hücre aralığı ya da özet Tablo olabilir. For Each oge in Koleksiyon ………. Deyimler ... Next oge
Döngü Deyimleri For Each…Next For each döngüsünü kullanırken üzerinde dolaşılacak koleksiyon tipinde bir eleman tanımlamak gerekir. Yukarıdaki örnekte aralik değişkeninin tipi Range yerine integer olarak tanımlamış olsaydık yandaki gibi bir derleme hatası alacaktık.
Döngü Deyimleri For Each…Next
Döngü Deyimleri For Each…Next Yanda verilen Excel tablosunda En yüksek maaşı hesaplayan, İşletme bölümünde çalışan kişi sayısını hesaplayan, Maaşlar toplamını hesaplayan ve İşletme bölümünde Memur olarak çalışan kişi sayısını hesaplayan makro kodlarını yazınız. Makro, tabloya yeni veri girişi yapılıp yeniden çalıştırıldığında girilen son veriler de dikkate alınarak hesaplama yapmalıdır.
Döngü Deyimleri Do While…Loop Koşul doğru olduğu sürece aradaki komutlar çalıştırılır. Loop satırına gelindiğinde, tekrar Do While satırına dönülür ve şartın sağlanıp sağlanmadığı kontrol edilir. Şart sağlanıyorsa deyimler bloğu çalışır, şart sağlanmıyorsa Loop satırından sonraki satıra geçilerek döngü sonlandırılır Do While şart ………. Deyimler Bloğu ... Loop
Döngü Deyimleri Do While…Loop
Döngü Deyimleri Do While…Loop Do while…Loop döngüsü ile A1:A10 hücre aralığını aşağıda gösterildiği şekilde dolduran program kodunu yazınız.
Döngü Deyimleri Do While…Loop
Döngü Deyimleri Do…Loop While Koşul doğru olduğu sürece aradaki komutlar çalıştırılır. Do While…Loop döngüsünden tek farkı koşul başta değil sonda kontrol edilir. Dolayısıyla Do While…Loop döngüsünde koşul sağlanmıyorsa komutlar hiçbir zaman çalışmaz. Ancak Do…Loop While döngüsünde koşul sonda kontrol edildiğinden yanlış da olsa bir defa çalışmış olur. Do ………. Deyimler Bloğu ... Loop While koşul
Döngü Deyimleri Do…Loop While
Döngü Deyimleri Do…Loop While
Döngü Deyimleri Do Until…Loop Bu tip döngüde, önce koşula bakılır. Eğer koşul yanlışsa aradaki komut satırları çalıştırılır. Loop satırına gelindiğinde tekrar başa dönülür ve koşul kontrol edilir. Bu işlem koşulun Doğru (True) olmasına kadar devam eder. Do While…Loop döngüsünün tersidir. Do Until koşul ………. Deyimler Bloğu ... Loop
Döngü Deyimleri Do Until…Loop
Döngü Deyimleri Do…Loop Until Do Until…Loop döngüsünün benzeridir. Aradaki fark bu döngüde koşul başta değil, sonda kontrol edilir. Bu döngüde koşul sonda kontrol edildiğinde her ne olursa olsun komutlar bir defaya mahsus mutlaka çalışacaktır. Do ………. Deyimler Bloğu ... Loop Until koşul
Döngü Deyimleri Do…Loop Until
Döngü Deyimleri While…Wend Do While…Loop döngüsü ile aynıdır. Belirtilen şart doğru olduğu sürece arada verilen komutlar çalıştırılır. While şart ………. Deyimler Bloğu ... Wend
Döngü Deyimleri While…Wend