You are on page 1of 18

Visual Basic For Application (EXCEL) Programlama Ders Notlar

Revizyon ve Bask Bilgisi 20/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

indekiler
indekiler........................................................................................ 2 nsz.............................................................................................. 3 Programlama Dili Nedir ve VBA nasl bir ortamdr? ................................ 4 VBAde Program Yazma... .................................................................. 5 Genel Program Yaps ........................................................................ 7 Makro Kaydetme ............................................................................ 8 Dorudan Modlden Program yazma ................................................ 9 Aklama Satrlar ......................................................................... 10 Sabitler....................................................................................... 11 Deikenler ................................................................................. 11 Deiken adlandrma kurallar........................................................ 12 Deikenlerin Kapsam ve mr .................................................... 13 Yerel Deikenler ...................................................................... 13 Modl Dzeyinde Deikenler ..................................................... 13 Statik deikenler ........................................................................ 14 Diziler ......................................................................................... 17

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

nsz
Bu ders notlar nn niversitesi Ekonometri Blm rencileri iin TBTII Dersi kapsamnda Programlamaya giri dersini uygulayabilmek amacyla yazlmtr. Hem derslerde hem de daha sonraki Programlama konularnda bavuru kayna olarak tasarlanmtr. Daha nceki konularda oluturduumuz Algoritmalar iin uygulamalar yapmay ve gerek bilgisayar ortamnda bu altrma ve rnekleri denemeyi salayacak temel bilgiler ierir.

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

Programlama Dili Nedir ve VBA nasl bir ortamdr?


Programlama Dili bilgisayarda zlecek bir sorun iin zmn bilgisayara adm adm yazlmasn salayan biimsel kurallar olan ve bu kurallara sk skya bamll gerektiren bir tanmlar kmesidir. Belki daha ksa bir tanm ile sizinle bilgisayar arasnda bir tercmandr demek doru olur. VBA ortam Modern programlama dillerinde Interpreter mant ile alan bir programlama dili olup alabilmesi iin EXCEL ortamna ihtiya duyar. Yaplan almalar EXCEL hcreleri ve EXCELin bize sunduu zellikler ile grselletirilir. Bu ders notlar bu amala hem programlamay somutlatrmaya alacak hem de EXCEL hakknda gerekli olabilecek nesne modeli hakknda bilgi verecektir. VBA aslnda tm Office uygulamalar ile kullanlabilen Ofis ortamnda gml bir programlama dilidir. Temelde Visual Basic programlama eleri zerine kuruludur. Ama her ofis programnda da farkl nesne yaplarndan dolay deiik yaplardan bahsedilir. Yani VBAy renerek temelde tm ofis uygulamalarnda program yazabilirsiniz. Ve ofis ortamnzda otomasyon oluturabilirsiniz.

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

VBAde Program Yazma...


Bu ortamda Program yazbilmek iin ncelikle EXCEL programna sahip olmalsnz. Bu notlarda EXCEL 2007 kullanlmaktadr. ncelikle EXCEL ortamnda Gelitirici sekmesinin etkin hale getirilmesi gerekmektedir.

Eer EXCEL ortamnzda yukarda gsterildii gibi Gelitirici Sekmesi Grnmyorsa bu sekmeyi etkin hale getirmek iin OFFICE dmesinde Excel Seenekleri Komutu seilir. Sizi aadaki gibi bir iletiim kutusu karlayacaktr.

Bu iletiim kutusunda krmz ile iaretlenmi onay kutusunun iaretlenmesini ve TAMAM diyerek onaylayp kmay salamalsnz.

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

Artk Kod yazmaya ve VBA program paracklar gelitirmeye hazrsnz demektir. Gelitirici Sekmesi seildiinde sizi aadakine benzer bir takm komutlar karlar.

Bu blmde Visual Basic komutu bizi daha ok ilgilendirmektedir. Ve yeri geldike dier komutlara da deinilecektir. Eer Visual Basic komutu seilirse ekranda program kodlar yazmanz salayacak Kod dzenleme ekranlar sizi karlayacaktr.

Bu ekranda Sol st blm Ak olan EXCEL Kitabn, bu kitapta yer alan alma sayfalarna dair kodlamalarn yaplaca dmleri ve Genel kodlamalarn yaplaca modl blm gmeniz mmkn. Hemen onun altnda Properties blmnde setiiniz blm ile ilgili zelliklerin yer ald zellikler ksm yer alr. Ekrann dier ksmnda ise kodlama yaplacak editr alanlar alacaktr. Kodlama yaptnz pencere kodlama yaptnz nesneye ait olacaktr. Ara ubuunda ise yazdnz kodlar altrp durdurabileceiniz, yaptnz kodlama ile ilgili dzenleme yapabileceiniz dmeler yer almaktadr.

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

Genel Program Yaps


Bu ekranda Projec dedii ksmda EXCEL alma kitabnz ierisinde yer alan tm sayfa ve modllerin olduu bir ksm grnyor. Bu ksm bu Kitabn tm sayfalarn, kitabn kendisini ve bu kitaba ait modlleri gsteriyor. Bu grnen nesnelerin her birinin kodlanabilir ve kodlanm komutlarn altrlabilir paracklar bulunur. Bu paracklar ift tklandnda Code diye anlan kodla sayfalar gelir. te bir programlarmz bu bo sayfalara yazacaz. Ve tabii ki yazdka kodlarn dolduunu greceiz. Bu ekranda EXCEL kitabnn sahip olduu gml nesneler Excel Objects blmnde grnrken bizim yazmay planladmz Modllerin ou Modules blmnde yer alacaktr. Nesnelerin ierisine yazm olabileceiniz kodlar sadece o nesnelerden ulalabilir olurken Modlle blmne yazacanz kodlar tm nesnelerden ve modllerden ulalabilirdir. Bazen bu ekrana ulaabilmek iin Makro Kaydedicisinden faydalanrz. Makro kaydedicisi yaptmz ilemleri kaydeden ve bunlar VBA kodlar ile ifade edip saklayan bi komuttur. Daha sonraki admlarda bu kaytlara modllerden ulaabilir ve tekrar tekrar altrabilirsiniz.

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

Makro Kaydetme
Grnm sekmesinde de yer alan Makrolar komutundan Makro kaydet komutunu setiiniz zaman yandakine benzer bir iletiim kutusu kar. Bu iletiim kutusu ierisinde Makroya bir ad vermeniz, gerekiyorsa bir aklama yazmanz, saklanaca yeri belirtmeniz ve son olarak ihtiya varsa ksayol tuu tanmlamanz salanr. TAMAM denince sonraki tm davranlarnz kaydedilir. Kayt ileminin tamamlanabilmesi iin yine grnm sekmesinde ve Makro komutundan Kayd Durdur komutnu seiyoruz. Bu ekilde yaptmz eylemler VBA kodlar ile ifade edilebilir bir duruma gelir. Aadaki rnekte bu yntemle ad Ekonometri olan bir Makro kaydedilmi ve yaptmz eylemler VBA kodlar ile ifade edilmitir. Bu makro daha sonradan yine Makrolar komutundan altrlabilir. Bylece ska yaplmas gereken bir ilemi otomatie balam olabilirsiniz.

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

Dorudan Modlden Program yazma


Eer yazacanz program paras hakknda bilginiz var ise ve Makro kaydedicisinin yardmna ihtiyacnz yok ise kodlarnz dorudan modllere yazarsnz. Hata makro kaydedicisinin hatal gibi grnen ksmlarn ya da deitirmek istediiniz ksmlarn kod dzenleyicisinden dzenleyebilirsiniz. Aacanz Kod sayfasnda bir modl sayfas oluturup ierisine de u kodlar grdnz gibi yazabilirsiniz.

Yordamn ad doldur olarak tasarlanm. Bu yordam Kitap1 dosyasnda Module2 isimli modl iinde yer alyor. Yeil olarak grnen satrlar aklama satr ve derleyici asndan hibir nemi yok. Mavi olarak grlen szckler VBA iin ayrlm szcktr. Dier Siyahlar ise programnzn geri kalan komutlarn ve ifadelerini anlatr. Bu program yazp altrarak ne tr bir ilem yaptn kendi gznzle grnz. lk dme program altrma dmesidir. 2. Dme alan program duraklatma dmesi ncs ise alan program durdurma dmesidir. Zaman zaman yazdnz kodlarda VBA sizlere kodu tamamlama, kodun olas alternatifleri arasnda seenekler sunma vb. zellikler sunar. VBA nesne ynelimli bir programlama dili ve ortam olduu iin EXCEL ile ilgili zelliklere ularken EXCELin nesne yapsndan faydalanabilirsiniz. Bu nesne yaps ii kodlar yazlrken i ie nesneler ve nesneler ile zellikleri ve metodlar arasna . (Nokta) iareti konur. rnein yukarda cells(x,1).select ifadesinde cells EXCEL zerinde bir hcreyi (x. Satr

38/29.02.2012 16:26:00

VBA EXCEL Programlama Ders Notlar

1. Stun) select ifadesi ise bu hcrenin seileceini anlatan metodu belirtir. Bu tr ifadeleri bazen olduka uzam olarak bile grebileceiz. Bazen bu nesne, metod ve zellikler hakknda yardm almamz gerekebilir. Bu tip durumlarda bu nesneyi yada zellik veya metodunu seip F1 tuuna basabiliriz. EXCEL seili bu zellik hakknda size yardm sunacaktr.

Aklama Satrlar
Yazacanz modl veya programlarda derleyici tarafndan dikkate alnmasn istemediimiz ifadeleri Aklama Satr olarak belirleriz. Bu amala ya REM szcn ya da iaretini kullanrz. VBA iin aklama satrlar TEK satrdr. Her aklama satr iin REM ifadesini kullanmanz gerekir. Normalde VBAda tm kodlar da tek satrda bitmelidir. Ancak kodlar tek satrda tamamlanamazsa, bu kodlarn dier satrda devam ettiini belirtmek zere alt tire (_) iareti yarm kalan satrn sonuna yazlr. Bu iaret sonraki satrn bu komutun devam olduunu anlatr.

38/29.02.2012 16:26:00

10

VBA EXCEL Programlama Ders Notlar

Sabitler ve Deikenler
Her programlama dilinde olduu gibi VBA ortamnda da programlar gelitirirken deikenler tanmlanabilir ve bir takm yollarla sabitler ifade edilebilir. VBAda farkl olarak veya fazladan hcrelere erimek ve kullanmak mmkndr.

Sabitler
Dier programlama dilerinde olduu gibi VBA ortamnda da sabiler bulunur. Bu sabitler ekilde anlalmaldr. 1. Program iinde kullanlan sabit say, sabit alfabetik deer ve dier sabitler (34, 2.234, geti gibi) 2. Const ifadesi ile tanmlanmaya allan sabitler (const pi = 3.14 gibi) 3. Enum sabitleri olarak VBA tarafndan tanmlanm ve Programlarda baz saylarn kullanlmasn, hatrlanmasn kolaylatran ifadelerdir. Bunlar ounlukla xl n eki ile balar ve anlattklar say veya tanma gre ismin geri kalan ksm tamamlanr. Baz durumlarda bunlarn vb ile balad da grlebilir. Mesela vbYes, vbNo, vbCancel sabitleri iletiim kutularnda evet, Hayr ve ptale tklandnda dndrlen deerleri anlatr.

Deikenler
Deikenler Programmz alrken her an deiik deerler alabilen, ve bellekte bir yer igal eden saklama birimleridir. Bu sakla ilemi Ana Bellek zerinde yaplr ve elektrik kesintilerinden etkilenir. Saklanacak deere gre farkl tipler de olabilir. Mesela saklanacak deer tam say ise integer kesirli say ise single veya double dizgi ifadesi ise string szckleri ile anlatlr.

38/29.02.2012 16:26:00

11

VBA EXCEL Programlama Ders Notlar

Deiken Tipleri Say Dizge Tarih Mantksal

Tam Say

Kesirli Say

String

Date

Boolean

Byte

Single

Integer

Double

Long

Currency

Yukardaki Tablo VBAda tanmlayabileceiniz deikenler hakknda sizlere bilgi verecektir. Bunlar basit tipte verilerdir. Ancak bir takm nesneleri tanmlamak zere Object tanm kullanlabilir. Bazen de tanmladnz deikenin ne tip deerler alabilecei ok belirgin deildir. Bu durumda Variant tanm kullanlr. Dim deiken_adi as deiken_tipi eklinde tanmlanan deikenler de deiken_tipi olarak belirttiimiz ifade kullanlacak deikenin ne trde olacan yani ierisinde saklayaca deerlerin hangi zellikte, hangi byklkte ve hangi hassaslkta olacan belirtmemizi salar. Yukardaki emada verilen trlerden biri olabilir. Deiken_adi ise bu deiken iin kullanmay planladnz ad anlatr.

Deiken adlandrma kurallar


Deikenlere vermeyi planladnz isimler bir takm kurallara uymaldr. Deiken isimleri har ile balamaldr. Harf rakam ve alt tire iaretinden oluabilir. Fakat boluk, ve bir takm zel karakterleri iermez. En fazla 40 karakterlik isimler verebilirsiniz. VBA tarafndan kullanlan ayrlm szckler deiken ad olarak kullanlamaz.

VBA ortamnda kullanlan her deikenin nceden tanmlanmas gibi bir zorunluluk yoktur. Bir deiken kullanld anda tanmlanm kabul edilir. Ancak bu ekilde bazen yanl yazmdan dolay tanmlamadnz ve hatta dnmediiniz halde farkl deikenleri kullanm olabilirsiniz. Bu da

38/29.02.2012 16:26:00

12

VBA EXCEL Programlama Ders Notlar

ilemlerinizin beklenenin aksine sonularn retilmesi eklinde etkileyecektir. Byle bir hatann en azndan derleme annda anlalabilmesi ve mantksal hataya yol amadan zlebilmesi iin option explicit ifadesi ile tanmlamalarnz zorunlu hale getire bilirsiniz. Bu ifade modl seviyesinde bir modln en stne yazlan ifadedir. Bu ifade ile bu modl ierisinde kullanacanz tm deikenlerin dim szc ile tanmlanmasn zorunlu hale getirmi olacaksnz.

Deikenlerin Kapsam ve mr
Deikenler yazldklar yere gre bir kapsama sahiptirler. Yani etkilerini gsterdikleri bir blgeye sahiptirler. Bir modl fonksiyon ve yordamlardan oluur. Fonksiyonlar function szc ile yordamlar da sub szc ile tanmlanrlar. Bu tanmlar ile modl dediimiz btn gerekli olduu kadar kk paraya ayrlm olur. Deikenlerimizde ya bu kk paralarn iinde ya da modl seviyesinde hkm srerler. Hatta tm EXCEL alma ortamnda hkm srmeleri de mmkndr. Bu amala deikenlerin yazldklar yer nemlidir. Ancak en az onun kadar kullanlan tanmlama szckleri de nemlidir.

Yerel Deikenler
Bu deikenler yordam veya fonksiyonlarn iinde dim szc ile tanmlanan deikenlerdir. Bu ekilde tanmlanm deiken sadece bu yordam iinde hkm srer. Yani kapsama alan sadece bu fonksiyon veya yordamdr.

Modl Dzeyinde Deikenler


Bu deikenler Modln tanmlamalar blmnde tanmlanr. Modln en st blm olan bu ksmda tanmlanan deikenler private, public veya dim szcklerinden biri ile tanmlanabilir. Private szc o deikeni sadece o modlde kullanlabilir olarak tanmlar. Dim ile private ayn anlamdadr. Public szcile tanmlanan deikenlerde ise o deikeni baka yordamlardan da grp kullanabilirsin anlamna gelir. Ayn zamanda Global szc ile de tm modllerde kullanlabilecek deikenler tanmlanr. Bu deikenler iin isim akmas olur ise en son yaptnz tanm geerli olacaktr. Programn alma srasna gre en son yaplm tanm daha nce yaplm tanmlar glgeler veya o tanmlar ezer diyebiliriz.

38/29.02.2012 16:26:00

13

VBA EXCEL Programlama Ders Notlar

Statik deikenler
Yukarda anlattmz kurallar erevesinde her deiken ilgili blgede hkm srer.normal artlarda herhangi bir deikene statik tanm uygulanmad srece her deiken kendi yordam iinde sfrlanarak hayata balar. Bu deiken her yordam arsnda yeniden oluturulur. Ancak bir deiken static anahtar szc ile tanmlanrsa bu deiken bu yordama ait olmakla birlikte her yordamn yeniden altrlmas srasnda yeniden oluturulmaz. Bir kere oluturulur ve bu deiken ile ileme devam edilir. Static K as integer eklinde tanmlanm bir deiken bu ekildedir.

Deiken Trleri
Byte
0 ile 255 arasnda tamsaylar saklayabilecek kapasiteye sahip bir deiken trdr. Bilgisayarn bellek ortamnda 1 bytelk yer igal eder. Deiken ile ilgili dikkat edilecek hususlar aadadr. Negatif deerler alamaz 255ten byk deer alamaz Kesirli deer alamaz

Integer
-32,768 ile 32,767 arasnda tam saylar saklayabilecek kapasitede bir deiken trdr. Bilgisayarn bellek ortamnda 2 bytelk yer igal eder. Deiken ile ilgili dikkat edilecek hususlar aadadr. -32,768-32,767 say aralnda deer alr Kesirli deer alamaz

Long
Integer trndeki deerlerin uratnz saylar iin yetersiz geldii durumlarda kullanlan deiken trdr. Tamsaylarn saklanmas iin kullanlr. Bilgisayarn bellek ortamnda 4 bytelk yer igal eder. Deiken ile ilgili dikkat edilecek hususlar aadadr. -2,147,483,648-2,147,483,647 say aralnda deer alr Kesirli deer alamaz

38/29.02.2012 16:26:00

14

VBA EXCEL Programlama Ders Notlar

Single
Saylarnzn ondalkl saylar olduu durumda tamsay deikenler iinize yaramazlar. Bu amala kullanlabilecek kesirli saylar saklayabileceiniz deiken trdr. Bilgisayarn bellek ortamnda 4 bytelk yer igal eder.

Double
Single Tek duyarlkl bir deiken trdr. Daha hassas ilemlerde gerek saynn tam ksmnn daha byk olduu durumlarda, gerekse ondalk hanesinin daha hassas deerler iin kullanlaca durumlarda bu deiken tr kullanlr. Bilgisayarn bellek ortamnda 8 bytelk yer igal eder.

Currency
Parasal deerleri saklamak istediiniz durumlarda kullanabileceiniz bir deiken trdr. Noktadan sonra 4 basamak kadar bir hassasiyet salar. Bilgisayarn bellek ortamnda 8 bytelk yer igal eder.

String
Alfabetik ifadeleri saklamak iin kullanlan bir deiken trdr. Bilgisayarn belleinde 0 ile 65,500 byte arasnda yer kaplar. Eer kullanacanz alfabetik ifadenin alabilecei uzunluklar belli ise tanmlamanz string * 45 eklinde yapp 45 karakterlik bir alan ayrlmasn salayabilirsiniz.

Date
Tarih saklamak istediiniz durumlarda kullanacanz deikendir.

Boolean
erisinde true yani doru veya false yani yanl bilgileriniz saklayan bir deikendir.

Object
EXCELe ait bir takm nesneleri saklamak veya bu nesnelere iaret edebilmek amacyla kullanlan bir deiken trdr.

Variant
Hemen hemen birok trdeki veriyi ierisinde saklayabilen bir trdr. Saysal, tarih para birimi gibi deerlerin tamamn saklayabilecek kapasitededir.

38/29.02.2012 16:26:00

15

VBA EXCEL Programlama Ders Notlar

B tip bir deikenin iindeki deer hangi trdedir bunu anlayabilmek iin kullanlabilecek bir takm fonksiyonlar bulunmaktadr.

38/29.02.2012 16:26:00

16

VBA EXCEL Programlama Ders Notlar

Diziler
Basit deikenlerin yan sra kimi durumlarda diziler kullanlmak zorunda kalnabilir. Diziler ayn ama iin kullanlan ve dolays ile da ayn trden olan ok saydaki deikeni tek bir deikenmi gibi grmemizi ve kullanmamz salayan yaplardr. Bu yaplar sayesinde dng komutlar ile bu deiken iindeki tm elemanlara seri ve sistematik bir ekilde eriilebilir. Diziler tek boyutlu olabilecei gibi ok boyutlu da olabilir. Tek boyutlu diziler matematikte bahsi geen VEKTR kavramna ift boyutlu diziler MATRS kavramna karlk gelir. Hatta boyutlu veya daha fazla boyutlu olmalar da mmkndr. Ancak yaygn olarak tek veya ift boyutlu diziler kullanlr. Her bir deiken tr iin dizi tanmlanabilir. Diziyi tanmlamadan kullanmanz mmkn deildir. Dizi tanmlandnda hem deikenin trnden hem de deikenin eleman saysndan bilgi verirsiniz. Dim ogrenci(25) as string Bu ifade 25 elemanl bir string dizisi tanmlar. Yani 25 tane ad-soyad bilgisi tutabilecek bir dizi tanmlanmtr. Dim matris(4, 8) as integer Dim veriler (4,6,8) as double Buradaki ifadelerden birincisinde drt satrdan sekiz stundan oluan bir tamsay matrisi tanmlamtr. kinci ifade ise drt satr alt stun ve bunun gibi sekiz dzlemden olumu bir kp tanmlar. Bazen tanmlanacak dizinin boyutu ve ka elemanl olaca bilinemeyebilir. Bu durumda dinamik dizi tanmlanr. VBAda dinamik dizi modl dzeyinde bir deikenin aadaki ekilde tanmlanmas ile oluturulur. Dim dinamik() Daha sonra herhangi bir yordam iinde daha nce o modlde tanmlanm bir deiken redim ifadesi ile tekrar tanmlanarak geniletilir. Eer bu redim ifadesi ile beraber preserve ifadesi de kullanlarak bir tanm yaplrsa dizi ierisinde daha nceden yer alan deerler korunmu olur. Redim veri(50) as integer Redim preserve veri(100) as integer Dizilerde bulunan eleman saylarnn veya dizi indis deerlerinin st ba ve alt ba deerlerinin bulunmasna ihtiya duyabilirsiniz. Bu amala LBound

38/29.02.2012 16:26:00

17

VBA EXCEL Programlama Ders Notlar

ve UBound adnda iki tane fonksiyon bulunur. Bu fonksiyonlardan UBound indisin st ba deerini bulurken LBound ise dizide indisin alt ba deerini bulur. Msgbox(LBound(veri)) Msgbox(UBound(veri))

38/29.02.2012 16:26:00

18

You might also like