Excelde VBA Programlama Visual Basic Application Emine TUNEL
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. • • Hatta tüm Excel çalışma ortamında da hüküm sürmeleri de mümkündür. 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. 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 Pr 1 yordamı çalıştığında x değişkeni ilk önce 100 değerini alır. Bu yordam içinden pr 2 alt yordamı çağrıldığında x değişkeninin değeri 250 olur. Pr 3 alt yordamı çağrıldığında x değeri 500 olur. Program akışı tekrar pr 1 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. • • • Bir kere oluşturulur ve bu değişken ile işleme devam edilir. 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. 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 A 1 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 A 1 hücresinde görünen a değişkeninin değeri 5’er artar. Çünkü static değişkenler bir kez oluşturulur, yordam her çağrıldığında 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 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 if şart 1 Then Else End if Else. If şart 2 Then Blok 1 Blok 2 End if Blok 1 Blok 2 Else. If şart 3 Then Blok 3 Else Blok 4 End if
Koşullu Deyimler • İf…Then…Else
Koşullu Deyimler • İf…Then…Else
• Select Case Koşullu Deyimler • 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 Blok 2 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
• For Each…Next • • Döngü Deyimleri 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ı, User. Form 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. • Ş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 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. Do While şart ………. Deyimler Bloğu. . . Loop
Döngü Deyimleri • Do While…Loop
• Do While…Loop Döngü Deyimleri Do while…Loop döngüsü ile A 1: A 10 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
- Slides: 37