38
MAKRO YAZIM EĞİTİMİ VBA (VISUAL BASIC FOR APPLICATONS) ARALIK 2004 /ANKARA Hazırlayan/Derleyen Gökalp AKYÜZ 2004 ANKARA

2excelVBA Kurs not2

Embed Size (px)

DESCRIPTION

ileri düzey excel

Citation preview

MAKRO YAZIM ETM

/

Visual Basic Kurs Notlar

MAKRO YAZIM ETM

VBA

(VISUAL BASIC FOR APPLICATONS)

ARALIK 2004 /ANKARA

Hazrlayan/Derleyen Gkalp AKYZ

2004 ANKARA

VBA (Visual Basic for Applications)

VBA (Visual Basic for Applications), Yllar boyunca Microsoft Office uygulamalar ile kullanlacak programlama dili oldu. VBA programclarn (ve gl kullanclarn) aadakileri yapmasn salayan basit bir programlama dilidir:

Office uygulamalarn geniletmek ve otomatize etmek

Office uygulamalarn ve verilerini, baka uygulamalar ile entegre etmek

Temel fikir gerekten basittir: insanlarn uygulamalar zgnletirebilmeleri ve kendi ortamlarna uygun beceriler ekleyebilmeleri iin, birka uygulama iin ortak bir dil ve programlama ortam oluturmak. Bu yzden VBA'in basit olmas gerekiyordu. VBA'i gereksiniminiz olan veya enebileceimiz herhangi bir tr uygulamay gelitirmek iin kullanmazsnz. VBA sadece temel denetim yaplarn, matematik ve karakter dizisi fonksiyonlarn ve deiken kullanm becerilerini sunar. VBA'in asl gc, onu destekleyen uygulamalarn nesnelerinden kaynaklanr.

Microsoft, VBA 5'in piyasaya srlmesiyle birlikte bu dili rnlerine programlanabilir zellikler eklemek isteyen reticilere lisanslamaya balad: rnein Autodesk AutoCAD. AutoCAD yllardr programlanabilen bir ortamd ama, programlama dili zgnd ve baka uygulamalar ile paylalamyordu. Baka pek ok retici de yazlmlarna programlama dilleri veya baka otomizasyon yntemleri eklediler. Ancak bu ok sayda uygulamadan oluan paralar bir araya getirmede tutkal ilevi grecek olan global bir dilin gereklilii akt. Sonunda Microsoft VBA'in dier reticilerin bu gereksinimlerini karlayan bir srmyle ortaya kt, stelik VBA Windows altnda uygulamalar otomatize etmek iin kullanlan evrensel bir dil olma yolundadr.

Gnmzde ou irket rafta satlan yazlmlar kullanr ve onlar zgnletirme gereksinimleri vardr. Amerika'daki iletmelerin yarsndan ou Microsoft Office rnlerini kullanr. stelik bu iletmelerin pek ou da bu uygulamalar kendi iletme gereksinimlerine uyarlamak iin VBA kullanr. Bu eilim gelecekte srecek ve glenecek. Uygulamalar sadece zgnletirme gereksinimi deil, ayn zamanda onlar iletiim kuracak ekilde birbirine balama gereksinimi var. VBA bunu da yapar, stelik bunun bir sonucu olarak, VBA programclarna olan gereksinim de nmzdeki birka yl ierisinde artacak.

Gnmz uygulamalar o kadar gl ve o kadar ok zellie sahip ki, zgn uygulamalar gelitirmek artk mantkl deil. Bunun yerine mevcut uygulamalar zgnletirerek bir arada almalarn salamak daha mantkl. Office 97 uygulamalar bile tipik bir irketin gnlk bilgisayar ilemlerini karlamaya yeterlidir. VBA destei veren ok sayda nc parti uygulamay da dnrseniz, onun irket ortamlarndaki nemini kolayca tahmin edebilirsiniz.

RNEK MAKRO (yada Basit bir VBA program )HAZIRLAMA

Oluturacamz makronun zellikleri aadadr. Anlatacamz admlar tek tek izleyin ve makroyu kaydederken sylediklerimizden baka herhangi bir ilem yapmayn.

1- alma Kitabn an. Bo bir alma sayfasna gein.

2- Yeni Makro Kaydet... komutunu altrn. Makro Ad kutusuna Deneme yazn. Tamam dmesine tklayn.

3- Fare ile B2 hcresini sein.

4- B-C stun balklar arasndaki izgiden fare ile tutun ve yeterli bir miktar geniletin. Adnzn saca kadar.

5-B2 hcresine klavyeden adnz girin.

6-Enter tuuna basn ve bir alt hcreyi sein.

7-Tekrar fare ile B2 hcresini sein.

8-Fare ile Kaln ikonuna tklayn.

9-Fare ile talik ikonuna tklayn.

10-Fare ile Alt izili ikonuna tklayn.

11-Fare ile Ortala ikonuna tklayn.

12-Fare ile Dolgu Rengi ikonundan ve siyah rengi sein.

13-Fare ile Yaz Tipi Rengi ikonuna tklayn ve beyaz rengi sein

14-Kayd Durdur ikonuna tklayn ve Deneme makrosunu tamamlam olun.Hazrlam olduunuz Deneme makrosunun grnts aadaki gibi olacaktr. Tek fark, biz admz Deneme Bilgisi olarak girdik.

Deneme olarak hazrlam olduunuz makronun Kod penceresini amak iin Aralar>Makro>Makrolar... (Tools/Macros/Macro ) komutunu tkladnzda Makro penceresinde iki adet Makro adnn olduunu greceksiniz. Bunlardan ilki daha nce hazrlam olan Aylar, ikincisi de yeni hazrlanan Deneme makrosudur. Bu alma kitab iin hazrladnz btn makrolar bu pencerede otomatik olarak harf srasna gre sralanacaktr. Siz Deneme makrosunu sein ve Dzenle (Edit) dmesine tklayn. Deneme makrosuna ait Kod penceresi alacaktr.Biz kod penceresindeki bilgilerin aynsn aaya aldk.

Sub Deneme_Makro()' Deneme_Makro Makro' Makro xxx tarafndan xx.xx.xxxx tarihinde kaydedildi.' Range("B2").Select Columns("B:B").ColumnWidth = 22.57 ActiveCell.FormulaR1C1 = "Deneme Bilgisi" Range("B2").Select Selection.Font.Bold = True Selection.Font.Italic = True Selection.Font.Underline = xlUnderlineStyleSingle

WithSelection .HorizontalAlignment=xlCenter .VerticalAlignment=xlBottom .WrapText=False .Orientation=0 .AddIndent=False .ShrinkToFit=False .MergeCells=False End With

With Selection.Interior .ColorIndex = 1 .Pattern = xlSolid End With

Selection.Font.ColorIndex = 2 End Sub

imdi yukardaki makro kodundaki satrlarn bize neler anlattn ksaca aklayalm.

Sub Deneme_Makro()Bildiri deyimi. Visual Basic programnda kullanlan yordam ve alt programlar Sub deyimi ile balar. Burada Deneme adl programn balad bildirilmektedir.

'Deneme Makro Genelde Kod penceresinde yeil olarak grntlenen bu satrlar () kesme iareti ile balyorsa, programa ait olmayan fakat program hakknda aklayc bilgi veren satrlardr.

Range("B2").Select B2 hcresinin seildiini belirtir. Her hcre seiminde bu satr grntlenir ve baka bir hcrenin seildii satra gelene kadar yaplan ilemler, bu hcreye ait olan ilemlerdir. Columns("B:B").ColumnWidth = 22.57 B stununun (sadece hcre deil), stun geniliinin 22.57 deerine kadar arttrldn ya da daraltldn anlatr. Geerli stun geniliinin 8.43 birimdir. Bu ifadeye gre stunu geniletmi olduk.

ActiveCell.FormulaR1C1 = "Deneme Bilgisi" R1C1 formundaki seilmi olan aktif hcreye girilen veriyi anlatr.

Range("B2").Select Makroyu hazrlarken 6. Admda Eter tuuna baslmt. Daha sonra tekrar B2 hcresi seilmiti. Burada Enter tuunun grevi hcreye girilen bilgiyi (veriyi) onaylamaktr. Fakat bizim u an kullandmz Excelin Seenekler /Options penceresinde, Seimi Enter tuundan sonra ta onay kutusu Aa seili olduu iin, Enterden sonra seim bir aa hcreye gemiti. Bunun iin herhangi bir komut satr yazlmad, fakat ikinci defa B2 seildiinde yani fare tklandnda, bu defa bu satr koda eklenmi oldu.

Selection.Font.Bold = True B2 hcresine yazlan isme ait yaztipinin (fontun) Bold (kaln) olarak seildiini Doru (True) lar. Bu seimin zdd False (yanl) olur.

Selection.Font.Italic = True B2 hcresine girilen isme ait fontun Italic (eik) olarak seildiini dorular. Selection.Font.Underline = xlUnderlineStyleSingle B2 hcresindeki seili metnin altnn dz bir izgiyle izilmi olduunu ifade eder.

With Selection

.HorizontalAlignment = xlCenter

.VerticalAlignment = xlBottom

.WrapText = False

.Orientation = 0 .ShrinkToFit = False .MergeCells = False End With

WithEnd With deyimi, kontrollere ait zelliklerin deitirilmek istenmesi ya da bir metod arld zaman, kontrol adnn verilmesinde kolaylk salar. Kontrollere ait elemanlarn birden fazlasnn zellikleri deitirilmek istendiinde kullanmda rahatlk salar.

rneimizin 14. admnda fare ile Ortala ikonunu tklayn demitik. te tam bu srada zerinde uratmz hcreye ait bilginin zelliini deitirmek istediimizde with zellii devreye program blou olarak girdi. With ile bloun balad End With ile de bittii anlalr.

HorizontalAlignment = xlCenter Hcredeki verinin yatay hizasnn (HorizontalAlignment) hcre iinde ortalandn (xlCenter) anlatan satrdr.

VerticalAlignment = xlBottom Hcredeki verinin dikey hizasnn (VerticalAlignment) hcrenin altnda (xlBottom) olduunu anlatan satrdr. Biz hcre iinde sadece bu kadar deiiklik yaptmz iin dierleri sfr deerini yada False deerini aldlar. Vertical satrnda deiiklik yapmadmz halde bunun da blok ierisinde gsterildiini grdnz.

With Selection.Interior .ColorIndex = 1 .Pattern = xlSolid End With Yukardaki program blounu da hcrenin iinin dolgu rengiyle boyandn ve bu rengin renk indeksindeki (ColorIndex) 1. renk olan siyahn olduu anlatlr.

Selection.Font.ColorIndex = 2 Hcre ierisindeki bilginin yani fontun renk kutusundaki 2 numaral renge (beyaza) atandn anlatan satr.

Hazr Makronun Dmeye Yada Menye Atanmas

Hazrladnz bir makroyu, her kullanmak istediinizde, Aralar> Makro> Makrolar...> (tools/Macros/Macro ) Makro Penceresi> altr Dmesi yolunu kullanarak altrmak uzun ve skc olabilir. Excel, bunun iin kullanclarna kolaylk salamaktadr. Dilerseniz makronuzu Ara ubuklarnda bulan ikonlar gibi bir ikona atayabilirsiniz. Dilerseniz Men ubuundaki gibi bir men oluturabilirsiniz. sterseniz hem Men ubuuna men olarak ayn anda da Ara ubuunda ikon olarak bulundurabilirsiniz. Seim size ait.

Daha nce oluturduunuz Makro1 makrosunu, hem Men ubuuna atayalm hem de ikon olarak atayalm.

1-Aralar>zeletir...>zelletir Penceresi>Komutlar Sayfa Sekmesini (Tools/Custimize/Commands) tklayn.

2- Kategoriler liste kutusunun sa tarafnda bulunan Dikey Kaydrma ubuunu kullanarak aadaki grnty yakalayn.

3-Makrolar komutunu tkladnzda Komutlar liste kutusunda zel Dme grnts ekrana gelecektir.

4-Farenizin sa tuunu basl tutarak, zel Dme ikonunu Ara ubuklarndan herhangi birisinin zerine srkleyin ve brakn.

5-Dme, Ara ubuunda yerini aldnda, hem otomatik olarak seili olduuna dikkat edin, hem de tam bu esnada zelletir penceresindeki Seimi Deitir dmesinin aktif hale geldiine dikkat edin.

6-zel Dme ikonu seiliyken, Seenei Deitir dmesine tklayn. Alan menden Makro Ata komutunu sein.

Makro Ata... (Assign Macro) komutunu setiinizde ekrana Makro Ata penceresi gelecektir. Bu pencerenin daha nce hazrlam olduunuz makrolarnz altrmak, dzenlemek vs.. iin kullandnz Makro penceresine benzediine dikkat edin.

Makro Ata penceresinde u ana kadar kullandnz alma Kitabnda hazrladnz ne kadar makro varsa hepsinin ismi sralanm olarak beklemektedirler. Tabi bu arada unu da belirtmeden gemeyelim. Biz buradaki makrolar olutururken Makro Kaydet penceresindeki Makronun Saklanaca Yer kutusuna Bu alma Kitab (This Workbook) seeneini girmitik.

7-Makro Ad liste kutusuna Makro1 makrosunu girin.

8-Tamam dmesine tklayn. Makro Ata penceresi kapanacak ve zelletir penceresine tekrar geri dneceksiniz.

imdi Makro1 isimli makronuzu Ara ubuunda bulunan zel Dmeye atam olduunuz. Dilerseniz zelletir penceresini kapatmadan Seimi Deitir Dmesine tklayarak alan menden dmenize ait dier zellikleri deitirebilirsiniz. Mesela, Ad seeneini ierisinde yazan zel Dme yazsn silin ve Makro1 olarak tekrar yazn.

9-Dier istediiniz deiiklikleri de yaptktan sonra zelletir penceresini kapatn ve Excel alma Sayfanza geri dnn.

10-Fare ile Ara ubuuna yerletirdiiniz Makro1 ikonuna tklayn

Makroyu Silmek

Oluturulmu bir makroyu tamamen kaldrmak iin Aralar>Makro>Makrolar... komutlarn tkladktan sonra ekrana gelen Makro penceresinden, silmek istediiniz bir makroyu sein ve daha sonra Sil dmesine tklayn. Bylece hazrlam olduunuz kaytl makro silinecektir. Fakat silinmeden nce size aadaki gibi bir uyar mesaj verecektir.

Makrolarda Adres

Yukardaki ekilde hazrlanan herhangi bir makroyu bir alma kitabnda birka yerde kullanmak istenebilir. Fakat makroyu altrdmzda, hangi hcrelerde makroyu oluturduysak her seferinde ayn yere yazdrr. Oysa bu tr bir makro bizim ok kullanl deildir. Makrolara ait iki trl adres tipi vardr. 1. Mutlak Bavuru(Sabit Adres, Absolute) Tipi2. Greceli Bavuru(zafi Adres,Relative) Tipi. Aadaki bilgiler Microsoft Excelin Yardm dosyasndan alnp aktarlmtr. Konu hakknda aklayc olmas amacyla orijinalini aynen buraya aktardk. Bu konu mutlaka renilmesi gereken bir husustur.

Bavuru; alma sayfasndaki bir hcreyi veya hcre araln tanmlar ve Microsoft Excel'e formlde kullanmak istediiniz deerleri veya verileri nerede aramas gerektiini belirtir. Bavurularla, alma sayfasnn farkl ksmlarnda bulunan verileri bir formlde kullanabilir veya bir hcredeki deeri birden fazla formlde kullanabilirsiniz. Ayrca, ayn alma kitabnn baka sayfalarndaki hcrelere, baka alma kitaplarna ve baka programlardaki verilere bavurabilirsiniz. Baka alma kitaplarndaki hcrelere yaplan bavurulara, d bavuru denir. Baka programlardaki verilere yaplan bavurulara, uzaktan bavuru denir.

Varsaylan olarak, Microsoft Excel , stunlar harflerle (A'dan IV'ye kadar, toplam 256 stun olarak) ve satrlar saylarla (1'den 65536'ya kadar) etiketleyen A1 bavuru biemini kullanr. Bir hcreye bavurmak iin, stun harfini, arkasndan da satr numarasn girin. rnein, D50, D stunuyla 50. satrnn kesitii yerdeki hcreye bavurur. Bir hcre aralna bavurmak iin, araln sol st kesindeki hcrenin bavurusunu girin, iki nokta st ste imi (:) girin, sonra araln sa alt kesindeki hcrenin bavurusunu girin. Aadakiler, bavuru rnekleridir. Buna bavurmak iinBunu kullann A. stun ve 10. satrdaki hcreA10A. stun ve 10. satrdan 20.satra kadar olan hcrelerA10:A20 15. satr ve B. stundan E. stuna kadar olan hcrelerB15:E15 5. satrdaki tm hcreler5:5 5. satrdan 10. satra kadar olan btn hcreler5:10 H. stundaki btn hcrelerH:H H. stundan J. stuna kadar olan tm hcrelerH:J Mutlak Bavuru: Bir formlde, forml ieren hcrenin konumuna baklmadan, hcrenin tam adresi, mutlak bavuru $A$1, $B$1 vs. biimini alr.

Greceli Bavuru: MS Excele forml ieren hcreden balayarak baka bir hcreyi nasl bulacan syleyen, A1 gibi hcre bavurusu. Greceli bavuru kullanma, kiiye bulunduu yerden balayarak nereye gideceini aklayan ynergelere benzer. rnein; iki blok yukar ve bir blok dz gidin gibi.

Greceli ve Mutlak Bavurularn Arasndaki Fark Bir forml hazrladnzda, hcrelere veya aralklara yaplan bavurular, ounlukla forml ieren hcreye gre konumlarna dayandrlr. Aadaki rnekte, B6 hcresi, =A5 formln iermektedir; Microsoft Excel, B6 hcresinin bir hcre stnde ve bir hcre solundaki deeri bulur. Bu ileme, greceli bavuru denir.

Greceli bavurular kullanan bir forml kopyaladnz zaman, yaptrlan formldeki bavurular gncelletirilir ve formln konumuna bal olarak farkl hcrelere bavurur. Aadaki rnekte, B6 hcresindeki forml, B7 hcresine kopyalanmtr. B7 hcresindeki forml, B7 hcresinin bir hcre yukarsnda ve solundaki hcreye bavuran=A6 olarak deiir.

Bir forml baka bir hcreye kopyaladnz zaman, bavurularn deimesini istemiyorsanz, bir mutlak bavuru kullann. rnein, formlnz A5 hcresini, C1 hcresiyle arpyorsa (=A5*C1) ve forml baka bir hcreye kopyalarsanz, her iki bavuru da deiir. Bavurunun deimeyen paralarndan nce bir dolar imi ($) yerletirerek, C1 hcresine bir mutlak bavuru yaratabilirsiniz. C1 hcresine bir mutlak bavuru yaratmak iin, rnein, formle, aadaki biimde dolar imleri ekleyin: =A5*$C$1

Hcre Tadktan ve Kopyaladktan Sonra, Hcre Bavurular Hatal

Kopyalanan formller, greceli hcre bavurular ieriyorsa, Microsoft Excel bavurular (ve karma hcre bavurularnn greceli ksmlarn), oaltlm formllerde ayarlar. rnein, B8 hcresinin =TOPLA(B1:B7) formln ierdiini varsayalm. Bu forml, C8 hcresine kopyalarsanz, oaltlm forml, o stundaki ilikili hcrelere bavurur: =TOPLA(C1:C7). Kopyalanan formller, mutlak hcre bavurular ieriyorsa, oaltlm formllerdeki bavurular deitirilmez.

Hcreleri tarsanz, tanan hcrelerdeki formller ayarlanmaz. Bununla birlikte, tanan hcrelere bavuran formller ayarlanarak, yeni konumlarndaki hcrelere bavurmalar salanr.

stediiniz sonular alamadysanz, zgn formllerdeki bavurular, ya greceli ya da mutlak hcre bavurularna deitirin. Sonra hcreleri yeniden kopyalayn.

Yukardaki anlatlanlardan bu blmde bahsetmek istediimiz ksm zetlemek gerekirse: Mutlak bavuruyu (sabit adres) kullanrsanz, hazrladnz makroyu hep ayn hcrelere kopyalarsnz. Greceli bavuruyu kullanrsanz, hazrladnz makroyu setiiniz herhangi bir hcreden balatabilirsiniz.

Sabit adres tipine ait rnekleri anladnz. imdi sra Greceli adres tipine rnek vermeye geldi. Aslnda her ikisi arasnda makro oluturmak asndan hibir fark yok. Tamamen birbirinin ayns. Tek fark makroyu kaydederken, Kayd Durdur ara ubuundaki Greceli Bavuru ikonuna tklamak.

imdi basit bir Greceli Bavuru tipinde makro hazrlayalm. 1- Aralar mensnden Makro komutunu, buradan da Yeni Makro Kaydet... komutunu tklayn. 2- Alan Makro Kaydet penceresindeki Makro ad kutusuna Greceli yazn. Tamam dmesini tklayn. 4) Ekrana gelen Kayd Durdur ara ubuundaki Greceli Bavuru (Relative ) ikonuna tklayn. konun basl olduuna dikkat edin.

5) Ayn admlar takip ederek Deneme makrosunun benzerini oluturun.

6) Makro hazrlama ilemi bittiyse Kayd Durdur ikonuna tklayn ve kayd durdurun.

Greceli makronuzu da B2 hcresinde oluturdunuz. imdi alma tablonuzdan herhangi bir hcreyi sein ve daha nce rendiiniz ekilde Greceli makronuzu altrn. rnein D6 hcresini seilir ve altrlr ise :

imdi sra hazrlam olduumuz makronun kodunu grntlemeye geldi. Evet aslnda ayn makroyu yazdk. Fakat, bavuru tipini deitirdik. Bakalm Greceli Bavuru ikonunu tklamanz kod sayfasnda ne gibi deiikliklere sebep olmu. Sub Greceli()'' Greceli Makro' Makro .. ' ActiveCell.Offset(1, 1).Range("A1").Select ActiveCell.Columns("A:A").EntireColumn.ColumnWidth= 22.57 ActiveCell.FormulaR1C1 = "Deneme Bilgisi" ActiveCell.Select Selection.Font.Bold = True Selection.Font.Italic = True Selection.Font.Underline = xlUnderlineStyleSingle

With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlBottom .WrapText = False .Orientation = 0 .ShrinkToFit = False .MergeCells = False End With With Selection.Interior .ColorIndex = 1 .Pattern = xlSolid End With Selection.Font.ColorIndex = 2 End Sub

Aada; Greceli ve Mutlak bavuru arasndaki sadece farkl olan satrlar karlatrdk. Bunlardan Kaln olarak yazdrlan stte olup Greceli bavuruya ait kod satr, altta bulunan da Mutlak (sabit) bavuruya ait kod satrdr. ActiveCell.Offset(1, 1).Range("A1").SelectRange("B2").Select ActiveCell.Columns("A:A").EntireColumn.ColumnWidth = 22.57 Columns("B:B").ColumnWidth = 22.57

ActiveCell.FormulaR1C1 = "Deneme Bilgisi"ActiveCell.FormulaR1C1 = "Deneme Bilgisi" ActiveCell.Select Range("B2").Select Yukarda uzun metin halinde verdiimiz yardm dosyas net olarak anlaldnda, bu bavuru kod satrlar arasndaki fark da anlalacaktr. Yine de aadaki tablolarda bu durumun izah grsel olarak size sunulmutur.

VBA Program Yazm

"Visual Basic For Application" Vba Excel Ortamnda Visual Basic programla diliyle uygulamalar gelitirmek manasna gelir. (Konumuz Excel olduu iin Excel ortam diyoruz. Bu MSAccess veya MSWord' de olabilir vs...)

Bu blmde Excel'in Visual Basic kodlama penceresinde yazlabilen ve Excel tablosuna hkmedecek kodlar ve ksa aklamalarn bulacaksnz. Bu kodlardan bazlar tamamen bir program ve veya programck olabilecei gibi bazlar da sadece programdan bir paradr. Bu

paray uygun kullandnzda iinizi kolaylatracaktr.

Program parasn her ne olursa olsun Vba kod sayfasnda

Sub...

End Sub

deyimleri arasna yazmalsnz.

Daha sonra Excel tablosuna da Formlar(Forms) Ara ubuu'nda bulunan dme ikonuna tklayarak, Excel alma sayfasna izin. Dme zerinde sa tua tklayn ve alan menden Makro Ata (Assign Macro) komutunu sein. kan pencereden makro adn tklayn ve Tamam dmesine basn. Artk kod sayfasndaki programnz dmeye atam oldunuz. Program altrmak iin Dmeye tklamanz yeterli.

Elimizde bulunan Program paras

Range("B2").Select

olsun.

1. VBA Kod sayfas alr.

2. Eer bir modl ak deilse Ara ubuklarndan yada Menden Modl komutunu tklayn ve Madl sayfasn alr.

3. Kod sayfasna aadaki gibi program yazlr.

SubMakrom()

Range("B2").Select

End Sub

4. Fark ettiiniz gibi Sub deyiminden sonra programmza Makrom ismini verdik. imdi de Excel alma sayfasna geilir. Eer ak deil ise Formlar ara ubuu alr.

5. Bu ubuk zerindeki Dme ikonuna tklanr ve alma sayfasna bir dme izilir

Makro penceresi otomatik alacaktr. Eer almadysa dmenin zrinde farenin sa tuuna tklanr ve Makro penceresi alr.

6. Alan makro penceresinde Makrom ismine tklanr ve Tamam dmesine tklanr. te bu kadar, Makroyu altrmak iin Excel alma Sayfasndaki dmeye tklamak yeterli. Yukardaki Makro sonucunda dmeye tklanrsa B2 hcresi seilecektir.

Deikenler, Sabitler ve Deiken Tipleri

Sabitler (Constants):

Temelde 3 tipte sabit kullanlmaktadr, bunlar :

nteger (tamsay)

-1, 50 gibi ondalk ksm olamayan saylar

Real (Gerek Say, Floating Point)

Ondalk ksm olan saylar. r:3.1415, -9.81,

Ayrca gsteriminde Engineering Notation denilen format kullanlmaktadr

r :6.2E5 = 6.2x105 = 620000

6.2E-5 = 6.2x10-5 = 0.000062

Chracter (Karakter yada Karaker dizisi yada text)

Excel Kurs Notlar, Blm 1, A gibi alfanmerik yada saysal karakterlerden oluan dizi.

Deiken Tipleri

VBte kullanlan deikenler aadaki tiplerden olumaktadr :

Deiken TipiKullanlanan ByteDeer Aral

Byte1 byte0 ile 255 arasnda

Boolean2 byteTrue or False Doru yada Yanl

Integer2 byte32,768 ile 32,767 arasnda

Long4 byte2,147,483,648 to 2,147,483,647

Single4 byteNegatif deerler iin 3.402823E38 ile 1.401298E45

Pozitif deerler iin 1.401298E45 ile 3.402823E38 arasnda

Double8 byteNegatif deerler iin 1.79769313486232E308 ile

4.94065645841247E324

Pozitif deerler iin 4.94065645841247E324 ile

1.79769313486232E308

Currency8 byte922,337,203,685,477.5808 ile 922,337,203,685,477.5807

Decimal14 byteOndalk noktas olmadan :

+/79,228,162,514,264,337,593,543,950,335 ;

Ondalk nokta ve 28 hane hassasiyet ile :

'+/7.9228162514264337593543950335

Date8 byte1 Ocak 100 ile 31 aralk 9999 aras

Object4 byteHerhangi bir nesne iin

String (variable-length)10 byte + karakter boyu0 ile yaklak 2milyar karakter

String (fixed-length)Karakterin boyu1 ile yaklak 65,400 karakter

Variant (with numbers)16 byteDouble tipinin snrna kadar herhangi bir deer

Variant (w)22 bytes + dizinin boyu0 ile yaklak 2milyar karakter

User-definedVariesDeikenin tipine gre deiir

VBde bir deiken ilk kullanld zaman atand deere gre yaratlr. Ancak bu yntem pratik gzkmekle birlikte iyi bir programclk alkanl deildir. En dorusu bu deikenlerin programn banda tantlmasdr. Bu ise Dim komut ile yaplr. r:

Dim a, b As Integer

Dim g As Single

Dim y as Double

Dim bugun As String

Dim x as Variant

Eer otomatik deiken kullanm zelliini kaldrmak istiyorsak, programn bana Option Explicit komutu yazlabilir. Bu komut var ise, bir deiken nceden tantlmam ise hata mesaj vererek uyaracaktr.Ayrca deikenlerin tipini belirlemek iin daha nce Qbasic, GwBasic, BasicA gibi basic kullanclarnn uygulad deikenin sonuna eitli karakter getirmeklede yaplabilir. Bu karakterler :

KarakterDeiken Tipi

%Integer

&Long

!Single

#Double

@Currency

$String

EER CMLES ( IF STATEMENT)

VB dilinde karar vermek iin kullanlan temel komut if else endif komutudur.

rnein klasik bir rnek olarak bir denklem sisteminin zm programndan alnan bir rnei kullanabiliriz

d = b ^ 2 - 4 * a * c

If d > 0 Then

r1 = (- b + SQR(d)) / (2 * a)

r2 = (- b - SQR(d)) / (2 * a)

i1 = 0

i2 = 0

ELSE

r1 = - b / (2 * a)

r2 = - b / (2 * a)

i1 = SQR(ABS(d)) / (2 * a)

i2 = - I1

End IfDNGLER

Do loop

x = 22

Do

x = x - 2

If x < = 5 Then Exit Do

Loop

Bu programda do ve loop komutlar arasnda ter alan komutlar tekrarlanmaktadr. Dngden Exit Do komutu ile k salanmtr. Ayrca kontrol satrlar do yada loop satrnada yazlabilir.

Do [{While | Until} koul]

[komutlar]

[Exit Do]

[komutlar]

Loop

Yada

Do

[komutlar]

[Exit Do]

[komutlar]

Loop [{While | Until} koul]

While .. wend

Dim sayac

sayac = 0 ' sayac sfrla.

While sayac < 20 ' Sayac 20den kk ise devam et.

sayac = sayac + 1 ' sayac 1 arttr.

Wend ' Sayac 19dan buyuk ise dngden kar

For Next

x = 1

For i = 1 To 5

x = x * i

Next i

Yukardaki x = x * i komutu 5 kere tekrarlanacaktr. Bylece 5! Deeri hesaplanacaktr.

Genel format

For saya = balangdeeri To sondeer [Step adm]

[komutlar]

[Exit For]

[komutlar]

Next [saya]

Array Tantm

Arrayler Dim [] komutu ile tantlr. r:

Dim DayArray(50)

Dim Matrix(3, 4) As Integer iki boyutlu array

' 3 boyutlu ve snrlar belirli bir array

Dim MyMatrix(1 To 5, 4 To 9, 3 To 5) As Double

' 1den 10 kadar dogum gnlerinin tutulduu array

Dim Dogumgunu(1 To 10) As Date

' Snrlar deer eklendike belirlenen dinamik bir array

Dim MyArray()

Subroutine ve Fonksiyonlar

Moduler programlamann temeli olan iki kavram altprogram (subroutine) ve fonksiyon aadaki ekilde tanmlanr :

[Private | Public | Friend] [Static] Sub isim[(parametre listesi)]

[komutlar][Exit Sub]

[komutlar]

End SubEer bir sub program private ise sadece o modl ierisinden arlabilir, public ise dardan baka bir modlden arlabilir .Friend ise o proje iinden arlabilir.

Static parametresi ise o sub program kapatlsa bile iinde yaratlan lokal deikenler silinmez ve sabit kalr.

Fonksiyonlar sub programlara benzemekle birlikte geriye bir deer dndrmektedir.

[Public | Private | Friend] [Static] Function fonsiyonad[(parametrelistesi)] [As type]

[komutlar]

[fonksiyonad= expression]

[Exit Function]

[komutlar][fonksiyonad = expression]

End Function

Kullancdan Bilgi Al ve Bilgi Verme

Kullancya bilgi vermek iin kullanlan en pratik komut msgBox komutudur

Msgbox program sona ermitir

Bu komut alt zaman sonu :

MsgBox "program sona ermitir", , "UYARI" :

Genel yazm format aadaki gibidir :

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Burada

Prompt : mesaj

Buttons : aada verilen dmelerin karlk numaralrnn toplamdr

ConstantDeerAklama

vbOKOnly0Sadece OK buttonu

vbOKCancel1OK ve Cancel

vbAbortRetryIgnore2Abort, Retry, and Ignore

vbYesNoCancel3Yes, No, ve Cancel

vbYesNo4Yes ve No

vbRetryCancel5Retry ve Cancel

vbCritical16Kritik mesaj ikonu.

vbQuestion32Soru iareti ikonu

vbExclamation48Uyar ! ikonu

vbInformation64Bilgi konu.

vbDefaultButton10lk buton varsaylan

vbDefaultButton2256kinci buton varsaylan

vbDefaultButton3512nc buton varsaylan

vbDefaultButton4768Dordnc buton varsaylan

vbApplicationModal0Application modal; Kullanc devam edebilmek iin seim yapmak zorundadr.

vbSystemModal4096System modal; Kullanc cevap verene kadar tm sistem bekler

vbMsgBoxHelpButton16384Help dmesi eklenir

VbMsgBoxSetForeground65536Mesaj kutusu penceresi, arka plan penceresi gibi davranr

vbMsgBoxRight524288Mesajlar saa dayal yazlr.

vbMsgBoxRtlReading1048576Arapa ve branicedeki gibi yazlar sadan sola yazlr

Title : pencere bal

Helpfile ve context :F1 tuuna basnca arlacak help dosyas ve o dosyada gsterilecek olan konunun numarasdr.

Kullancn hangi tua bast ise dn deerinden anlalr. Bu deerler:

ConstantDeerAklama

vbOK1OK

vbCancel2Cancel

vbAbort3Abort

vbRetry4Retry

vbIgnore5Ignore

vbYes6Yes

vbNo7No

INPUTBOX Kullancdan bilgi alma

Kullancdan bilgi almak iin aadaki formattaki InputBox komutu kullanlr.

InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])

Prompt : mesaj

Title : pencere bal

Default : Varsaylan deer

Xpos,ypos : mesajn ekrandaki koordinati

Helpfile ve context :F1 tuuna basnca arlacak help dosyas ve o dosyada gsterilecek olan konunun numarasdr.

Kullancn girdii deer string olarak geri dner.

Excel ve VB ile pratik lemler1- Hcre Semek.

Range("B2").Select

Cells(2,1).Select

[B2].Select

2- Hcreye deer atamak.

Range("B2").Value=100 'saysal deer

Range("B2").Value="Gkalp AKYZ Trnak iinde

3- Hcredeki Fontun Bykln deitirmek.

Range("B2").Font.Size=20

4- Hcredeki fontun adn deitirmek.

Range("B2").Font.Name="Verdana"

5- Hcredeki fontu Kaln,talic ve Alt izgili yapmak.

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

Range("B2").Font.Italic = True

Range("B2").Font.Underline = xlUnderlineStyleSingle

yada

Range("B2").Select

Selection.Font.Bold = True

Selection.Font.Italic = True

Selection.Font.Underline = xlUnderlineStyleSingle

6- Hcrenin dolgu rengini deitirmek.

Range("B2").Interior.ColorIndex = 6 'Sar renk

7- Hcrenin Fontunun rengini deitirmek.

Range("B2").Font.ColorIndex = 3 'Krmz renk

8- Hcreye Forml yazdrmak.

Range("B2").Formula="=A1+A2"'A1 ve A2 hcresini toplar,B2 ye yazdrr.

9- Aktif olan hcrenin etrafndaki hcreyi semek

ActiveCell.Offset(1, 0).Select 'Aktif hcrenin altdakini seer.

ActiveCell.Offset(-1, 0).Select 'Aktif hcrenin stndekini seer.

ActiveCell.Offset(0, 1).Select 'Aktif hcrenin sandakini seer.

ActiveCell.Offset(0, -1).Select 'Aktif hcrenin solundakini seer.

10- Aktif olan hcrenin belirtilen kadar uzandaki hcreyi semek.

ActiveCell.Offset(0, 5).Select 'Aktif hcrenin sandaki 5. hcreyi seer.

11- Aktif hcreden belirtilen uzaklktaki hcreye deer atamak.

ActiveCell.Offset(1,1).Value = "DENEME" 'Aktif hcrenin altnda ve sandaki hcreye DENEME yazdrr.

12- Aktif hcrenin zerindeki iki hcrenin deerleri toplanr ve sonu aktif olan hcreye yazlr.

Sub toplama()

t1 = ActiveCell.Offset(-1, 0).Value

t2 = ActiveCell.Offset(-2, 0).Value

ActiveCell.Value = t1 + t2

End Sub

13- Seili hcrelerdeki biimleri siler.

Selection.ClearFormats

14- Seili hcreleri aa teler.

Range("A1:A5").Select 'A1 ile A5 arasndaki hcreler seilir.

Selection.Insert Shift:=xlDown 'Seimi aa kaydrr. Burada sadece seili olan 5 adet hcre aa kaydrlr.

15- Seili hcrelere ait hm satr telemek.

Range("A1:A5").Select

Selection.EntireRow.Insert '14. koddan farkl olarak seili olan hcrelere ait 1 ila 5 arasndaki tm satrlar 5 satr aa telenir.

16- Seili hcrelere ait tm stunu telemek.

Range("D6:E7).Select

selection.EntireColumn.Insert

17- Ak olan Excel alma Kitabnn belirtilen sayfasndaki istenen hcreye deer atar.Workbooks("Kitap1.xls").Worksheets("Sayfa1").Range("A1").Value = 3

18- Yaplan seimlerde bo olmayan hcre saysn verir.Sub hucresayisi() Dim kontur As Integer kontur = Application.CountA(Selection) MsgBox "Seimdeki dolu hcrelerin says:" & konturEnd Sub

19- 18. maddedeki kodlamada 'CountA' da bulunan 'A' kaldrlrsa seimde sadece ka hcrede say (rakam) varsa onlarn adedini verir.Application.Count(Selection)

20- Seili hcrelerin saysn verir. Selection.Count

21- Seimin satr saysn verir.Selection.Rows.Count

22- Seimin stun saysn verir.Selection.Columns.Count

23- Deiik blgelerdeki seili alanlarn stun saysn verir.Sub sutunsayisi()Dim i As IntegerDim alankonturu As Integer

alankonturu = Selection.Areas.CountIf alankonturu