twitter

Excel Vba

III. EXCEL VBA

Visual Basic for Application (VBA), Microsoft Visual Basic programlama dilinin nesne temelli bir uyarlamasıdır. Nesneler Microsoft uygulamaları tarafından sağlanır.

 

Visual Basic for Application, Excel içinde yer alır. Excel gibi diğer uygulamalar da VBA’ı destekler. Visual Basic bilen kullanıcılar VBA’e alışmaları çok kolay olacaktır. Excel bilen kullanıcılar ise hem hem VBA’i öğrenecek hem de Visual Basic’i öğrenecektir.

 

VBA, güçlü ve kolay kullanılan bir makro dili olarak geliştirilmiştir. Uzman ve yeni başlayan kullanıcılar (kendi işleri ile ilgili) gereksinimlerini VBA ile kolayca çözebilecektir. VBA sayesinde diğer uygulamalarla da iletişim sağlanır. Birbirine bağlanabilen bu uygulamalar; Microsoft Excel, Microsoft Power Point, Microsoft Project ve Visual Basic ile yazılmış uygulamalar.

 

A.Visual Basic Editörü

Excel içinde bir makro ya da VBA kodu yazmak için Visual Basic araç çubuğu üzerinde yer alan “Visual Basic Editor” kullanılır.

Eğer daha önce Excel ya da Word ortamında makro yazdıysanız, Visual Basic Düzenleyicisi ilk başta daha önce görmediğiniz pencereler ve düğmelerle karışık gelecektir.

 

Not: Visual Basic Düzenleyici içindeki özel bir pencere hakkında bilgi almak için, o pencereyi açtıktan sonra F1 tuşuna basın.

1. Özellikler Penceresi

Bir özellik, bir nesnenin rengi ya da başlığı gibi bir karakteristiğidir. Bir nesnenin boyu, rengi, yazı tipi bilgiler bu pencere aracılığıyla düzenlenir.

2. Proje Gezgini

Bir çalışma kitabı, belge, şablon ya da sunumla ilişkilendirilmiş kodların hepsi çalışma kitabı, belge, şablon ya da sunumla beraber otomatik olarak kaydedilen bir proje içinde saklanır. Visual basic düzenleyicinin içindeki, proje gezgini ile açık bulunan her çalışma kitabı, belge, şablon ya da sunumun içindeki projeleri görebilir, değiştirebilir ve aralarında geçiş yapabilirsiniz.

 

Proje gezgini penceresini isterseniz değişik yerlere yerleştirebilir ya da boyutlarını değiştirebilirsiniz.

 

Proje gezgininde açık bulunan her çalışma kitabı, belge, şablon ya da sunum için bir proje vardır. Her proje içinde ise, olayları temsil eden nesneleri bulacaksınız. Bu nesneler; Belgeler, Çalışma kitapları ve Çalışma sayfalarıdır.

 

Formlar: (Kullanıcı formları olarak da adlandırılır) Kullanıcıların veri girişi ya da bilgi alış verişi için kullanılan iletişim kutularıdır.

Standart Modüller: Özel bir nesne ya da bir formla ilişkisi olmayan kodlan taşırlar.

Sınıf Modüller: Özel bir nesne tipinin kodunu taşırlar.

Referanslar: Diğer projelere olan referansları taşırlar.

Bir modül ya da form içindeki kodu görebilmek için, nesneye tıkladıktan sonra, Proje gezgini penceresinin üstündeki, Kod Görüntüle düğmesine basın.

 Kod Görüntüle düğmesi

Bir nesne ya da formun kendisini görebilmek için ise, nesneye tıkadıktan sonra, Proje gezgini penceresinin üstündeki, Nesne Görüntüle düğmesine basın.

 Nesne Görüntüle düğmesi

3. Kod Penceresi

Bir proje içindeki kodları görebilmek için, kodu taşıyan elemana tıkladıktan sonra, Proje Gezgini penceresinin üst tarafında bulunan Kodu Görüntüle düğmesine basmanız gerekir.

 

İpucu: Kod penceresinde aynı anda birden fazla yordam görebilmek için, Araçlar, Seçenekler menüsündeki, Düzenleyici sekmesinden, Tam Modül Görünümünü Varsay kontrol kutusunu seçin. Her seferinde bir yordam görebilmek için ise bu kontrol kutusunu temizleyin.

 

Kod pencerenin üst tarafında bulunan Nesne (Object) ve Yordam (Procedure) listelerini kullanarak kodlar arasında geçiş yapabilirsiniz. Nesne kutusundan, (Genel) üzerine gelin ve Yordam kutusundan, özel bir olaya atanmamış bir Yordam adına tıklayın. Nesne kutusunda, bir nesneye tıklayın, ardından Yordam kutusundan, herhangi bir olay üzerine basarak, o olaya atanmış bulunan kodları görün.

 


B. Bir Procedure'ın Yapısı

Visual Basic düzenleyici ortamına yaratılacak olan program kokdu makro ya da procedure (yordam) olarak adlandırılır.

 

Visual Basic’te değişik türde yordamlar (procedure) kullanılır:

 

·         Sub

·         Function

·         Property

 

Bir Sub yordamı herhangi bir değer döndürmez. Çağrılarak ya da bir olaya tepki olarak çalışır. Function yordamlar ise bir değer döndürüler. Örneğin bir faiz hesabının sonucunu döndürürler. Property yordamlar ise bir değer döndürüler, atama yaparlar ve nesnelerin referanslarını düzenlerler.

 

Bir Sub yordamının yapısı:

 

[Private|Public][Static] Sub yordam adı (argümanlar)

Deyimler

 

End Sub

         

Yordam çalıştırıldığında Sub ve End deyimleri arasında kalan satırlar işletilir. Sub yordamlar standart modüller, class modüller ve form modülleri içinde yer alırlar. Sub yordamlar varsayım olarak bütün modüllerde Public tanımlanır. Bunun anlamı bu yordamların uygulamanın heryerinden (diğer modüllerden) çağırılabilmesidir.

 

Argümanlar ise tanımlanan bir değişken gibidir. Çağırılan yordamdan geçen değerler olarak tanımlanır.

 

Visual Basic’te yordamlar (procedure) ikiye ayrılırlar:

 

·         Genel yordamlar

·         Olay yordamları

1. Genel Yordamlar

Bir genel procedure belli bir işlemi üstlenen program parçasıdır. Örneğin bir dosyanın açılması ya da raporun bastırılması için kullanılabilir. Genel yordamlar diğer yordamlardan çağrılırlar. Böylece belli bir işlevi olan bu birim programın her yerinden istenildiği kadar çağrılarak kullanılır.

 

Buna karşın olay yordamları ise kullanıcının yarattığı bir olay nedeniyle çalışır. Olay yordamları kullanıcıların hareketlerine tepki olarak çağrılırlar. Örneğin bir düğmeye tıklayarak bir işlemin başlatılması.

 

İyi bir programlama stratejisi içinde bir takım ortak görevler genel yordamlar olarak planlanmalıdır. Böylece kod tekrarına gerek kalmaz.

 

Yapısı:

 

Sub yordam adı(arguments )

 -deyimler-

 

End Sub        

 

2. Olay Yordamları

Olay yordamları bir olayın (event) oluşmasına tepki olarak çalışırlar. Visual Basic nesneleri (formlar, metin kutuları, düğmeler, vb) belli olayları tanırlar. Böylece olay oluştuğunda; o olay için hazırlanmış olay yordamı çalışır.

 

Bir komut düğmesinin olayları:

 

Click: Tıklama

GotFocus: Odaklanma,üzerine gelme.

KeyDown: Bir tuşa basmak.

MouseDown: Farenin bir tuşuna basmak.

 

Olay yordamları, bir nesnenin alt tire ile olaylara bağlı olarak geliştirilir. Bu adlar Visual Basic kod editörü tarafından otomatik olarak ya da manuel olarak oluşturulur.

 

Yapısı:

 

Nesne_Olay

 

Örnek:

 

Command1_Click

 

Olay yordamları Visual Basic nesnelerinin olaylarına bağlı olarak geliştirilirler: Örneğin Form1_load olay yordamı bir formun açılması sırasında çalışacak bir yordamı, Command1_Click olay yordamı da bir komut düğmesine tıklandığında çalışacak bir kod birimini gösterir.

 

Yapısı:

 

Sub kontrol adı_olay adı(argümanlar )

   -deyimler-

 

End Sub        

 

Olay yordamlarının adını kod editörü içinde doğrudan yazabileceğiniz gibi Visual Basic tarafından otomatik olarak koda eklenen yordam ve olay adlarını da kolayca kullanabilirsiniz. Bu işlem için kod editörü penceresinde nesne ve olay seçilir.

 

1. Kod editörü penceresinde Object kutusundan istediğiniz nesneyi seçin.

2. Procedure kutusundan isteğiniz procedure’ı seçin.

3. Sub procedure’ınız hazır.

 

Not: Burada procedure’ların adlarıyla ilgili olarak önemli bir konuyu açıklamak istiyorum. Bir komut düğmesine bir olay yordamı ekledikten sonra; örneğin Command1_Click, özellikler tablosundan Name özelliği ile kontrolün adı değiştirilirse Visual Basic bunu takip edemez ve eski procedure’ı genel bir procedure olarak modül genel düzeyine atar. Bu durumda procedure yazılmadan önce adlandırma işleminin yapılması gerekir.

 

3. Fonksiyonlar

Visual Basic procedure'ları sadece Sub olarak düzenlenmez. Bir diğer procedure yapısı da Function olarak bilinen fonksiyonlardır.

 

Bir procedure olarak düzenlenen fonskiyonlar belli bir işlemi kod olarak içeren ve bir değeri geri döndüren program parçalarıdır. Bir yordam olarak yaratılan fonksiyonların Sqr, Val gibi Visual Basic’te hazır olarak bulunan fonksiyonlarla ilişkisi yoktur. Fonksiyonlar kullanım bakımından bir işlemi yapan ve istenildiği yerde kullanılabilen bir kod birimidir. Örneğin bir faiz fonksiyonu istenildiği program içinde istenilen yerde çağırılarak kullanılır.

 

Bir fonksiyon yordamının yapısı:

 

[Private|Public][Static] Function yordam adı (argümanlar) [As tip]

            -deyimler-

 

End Function

         

Fonksiyonlar ayrı bir yordam olarak düzenlenirler. Fonskiyonların kullanımında argümanlar önemlidir. Fonksiyonlar argümanları alırlar, bir dizi işlem yaparlar ve sonucu döndürürler.

 

Sub yordamlar ile Function yordamlar arasında farklar şunlardır:

 

·         Bir fonksiyon değer döndürür ve genellikle bir eşitliğin sağında kullanılır.

·         Bir sub ise belli bir işi yapar. İşlemi tamamlar bir değer ya da parametre ile kullanım zorunluluğu yoktur.

 

 

Function UcretHes(deger1, deger2, deger3)

 

-deyimler-

 

End Function

 

Yapısı:

 

Ucret = UcretHes(gun, baz, katsayı)

 

Fonsiyon yordamlar bir değeri elde etmemizi sağlarlar.  Fonksiyonlar değişken gibi veri tipine sahiptirler. Bu veri tipi dönecek verinin tipini belirler. Fonksiyonlar bir hesaplamanın parçası da olabilirler.

 

Toplam = Ikramiye + UcretHes(gun, baz, katsayı) / 360

 

Örneğin çapı verilen bir dairenin alanını hesaplayan bir fonskiyon ya da verilen dereceyi fahrenheit’e çeviren bir fonksiyon gibi.

 

Örnek: Dereceyi Fahrenheit'e çeviren fonksiyon

 

Fonksiyonun tanımı:

 

Function Fahrenheit(x)

Fahrenheit = x * 9 / 5 + 32

End Function

 

Fonksiyonun kullanımı:

 

Private Sub Command1_Click()

Dim Değer As Integer

Değer = InputBox(" ")

MsgBox Fahrenheit(Değer)

End Sub

 

C. Nesneler

Nesne (obkect)  çalışma tablosu (worksheet), sayfa (sheet), sayfa üzerinde üzerinde bulunan bir aralık,  çizim, grafik, bir düğme nesne olarak adlandırılır.

 

Şekil: Microsoft Excel Nesneleri

 

Excel VBA'de işlevsel olan makrolar nesneler sayesinde yazılır. Nesneler (objects), Excel'de kontrol edilecek şeyleri temsil eder. Bunlar Workbook (Çalışma Tablosu), Rows (Satırlar), Cells (Hücreler), Charts (Grafik) vb bir şey olabilir.


Nesnelerle işlem yapmak için iki önemli aracın bilinmesi gerekir. Bunlar: Methods (Metotlar) ve Properties (Özellikler) dir.

 

Metotlar nesnelerle yapılacak işlemleri tanımlar. Örneğin bir alanın silinmesi uygun nesne (alan) ve uygun metot (silme işlemi) ile yapılır.

 

Özellikler ise nesnenin özelliklerini gösterir. Örneğin hücrenin renkli ya da italik olarak yazılması gibi.


Nesne

Açıklama

Application

Excel uygulamasının geneli

Workbook

Excel Çalışma Kitabının tamamı

Worksheet

Bir Çalışma Kitabındaki bir Çalışma Tablosu

Range

Bir ya da daha çok hücre

Chart

Bir Çalışþma Tablosundaki bir Grafik

Nesne tanımlanmasında nesnenin kendini kapsayan ve kendi içindeki nesne ile birlikte yapılmasından tam nesne tanımlaması ortaya çıkar:

 

Application.Workbooks("butce").Worksheet("ocak").Range("a1")

 

1. Özellikler

Bir nesnenin özelliği onun rengi, uzunluğu gibi niteliklerini düzenlemek için kullanılır:

 

 

            Range("A1").Font.Bold = True

            Cells(5,1).Font.Size = 34

 

2. Nesnelerinin Önemli Özellikleri

Her nesnenin çok sayıda özelliği vardır. Aşağıdaki tabloda yaygın kullanılan özellikler yer almaktadır:

 

Özellik

Açýklama

ActiveCell

Aktif pencerenin aktif hücresi

ActiveSheet

Aktif Çalışma Kitabının aktif Çalışma Tablosu

ActiveWorkbook

Excel'deki aktif Çalışma Tablosu

Bold

Metnin harflerinin kalın görünmesi

Italic

Metnin harflerinin yatık görünmesi

Column

Bir alandaki ilk kolonu tanımlayan sayı


Row

Bir alandaki ilk satırı tanımlayan sayı

ColumnWidth

Belirtilen alanda kolonların genişliği

Hight

Nesnenin yüksekliği

Width

Nesnenin genişliği