Upload
murat-dogan
View
31
Download
6
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