Makro Lars

Embed Size (px)

Citation preview

Temel Bilgiler Makrolara Giri VBA (Visual Basic for Applications) Programlamaya Gei Deiken ve Veri Tipleri Program Kontrol Deyimleri Dngler ve Kontrol fadeleri Operatrler Fonksiyonlar ve Alt Programlar Bilgi Giri ve Mesaj Pencereleri Disk ve Dosya Ynetim Komutlar String lemler Tarih ve Zaman Fonksiyonlar

Additional Kontroller Denetim Ara ubuu Formlar Ara ubuu Form Oluturma Dosyalama lemleri Rastgele Eriimli Dosyalar Sral Eriimli Dosyalar Dosya Kontrol Fonksiyonlar Excel de Program Yazma Hata Yakalama Debug Personel Program o ve daha birok rnek

YAZARLAR Adem KSEMANBilg.Prog.

Mehmet ZPINARBilg.Prog.

NN NVERSTES MALATYA 2004

NDEKLER1. BLM Makro Nedir? 2. BLM MAKROLARA GR 4 5 6 7 8 11 11 17 18 22 25 26 26 27 27 27 27 28 28 28 29 29 29 29 29 30 32 33 Basit Bir Makronun Kayd Nasl Yaplr? Bir Makronun Ksa Yoldan altrlmas 3. BLM NEML ARA UBUKLARI ve ELEMANLARI Formlar Ara ubuu ve zellikleri Denetim Ara Kutusu ve zellikleri Formlar ve Denetim Ara ubuklarnn Karlatrlmas 4. BLM VBA (Visual Basic for Applications) VBA (Visual Basic for Applications) Componentleri ile alma Componentler ve Genel zellikleri Additional Controls En ok Kullanlan Ek Kontroller 5. BLM PROGRAMLAMAYA GE Deikenler ve Veri Tipleri Global ve Local Deiken Tanm Deikenlerin ve Kontrollerin Tipini Belirlemek Program Kontrol Deyimleri If Yaps Select Case Yaps IFF Choose-Switch Dng Deyimleri For Dngs While - Wend ve Do While-Loop Dngs Do Until Loop Dngs Do Loop While ve Do Loop Until Dngs Dng Kontrol fadeleri Exit Do Exit For Exit Sub, Exit Function End With With End Operatrler Fonksiyonlar ve Alt Programlar Procedur Tanm Procedur ars TEMEL BLGLER 1 2 Excel deki baz nemli kavramlar

6. BLM

BLG GR ve MESAJ PENCERELER 34 36 37 39 40 41 43 44 45 47 47 49 49 52 79 80 83 84 86 88 90 91

MsgBox (Mesaj Kutusu) InputBox (Bilgi Giri Kutusu) 7. BLM KOMUTLAR Disk ve Dosya Ynetim Komutlar Tarih ve Zaman Fonksiyonlar Uygulamalarla lgili Komutlar String lemleri Rastgele Say retim Fonksiyonlar Yuvarlatma Fonksiyonlar 8. BLM DOSYALAMA LEMLER Dosya Amak Rastgele Eriimli Dosyaya Yazma ve Okuma Sral Eriimli Dosyaya Yazma ve Okuma Dosyalar Kapatmak Dosya Kontrol Fonksiyonlar 9. BLM EXCEL de PROGRAM YAZMA Personel Program eitli rnekler rnek 1 Otomatik Toplam rnek 2 - Hesaplama ve Dosyalama rnek 3 Dosyadan Bilgi Alma rnek 4 Banka deme Plan Hesaplamas rnek 5 arpm Tablosu rnek 6 Toplam Deer Bulma Hata Ayklama Programn Adm Adm altrlmas

NSZ

Bilinli kullanc olmak, her eyden nce, sz konusu rn veya hizmeti yakndan tanmak ve onunla ilgili temel kavramlar bilmekten geer. Dolaysyla tketici konumunda olsak bile, tkettiimiz rn veya hizmetin zelliklerini bilmeye almalyz. Bu anlamda gnlk hayatta ev ve ofislerde kullandmz Excel ile yaplan nemli ilevleri sadece iimiz grlsn diye kullanmaktayz. Halbuki Excel ile bir programlama dili gibi btnleebilirsiniz. Excelin bnyesinde bulunan Ara ubuklarndan, Formlar ve Denetim Ara ubuu vastasyla hibir kod yazmadan baz zel ilemleri, hem kolay hem de gzel bir grnt vererek yapabilirsiniz. Veri sorgulama, bulma, deitirme gibi ilemler de formller kullanlamayaca iin bu tr ilemler de makrolara ihtiya duyulur. Bunun iin biraz programlama bilgisi ile Excel de gvenli, ilevsel ve akc bir program yazabilirsiniz. Excel in bu anlamda sunmu olduu VB (Visual Basic ) editrnden faydalanlr ve burada form ve form elemanlar ile alabilirsiniz. Kitabn yazm amac, Excel in farkl ynlerini gstermek ve programclk mantn anlatmaktr. Kitabn yazm aamasnda yardm ve desteklerini esirgemeyen sayn hocamz N.Murat Yamurlu hocamza sonsuz kranlarmz belirtmek istiyoruz. Mehmet ZPINAR [email protected] Adem KSEMAN [email protected]

Blm -1-

TEMEL BLGLER

Excel deki Baz nemli Kavramlar Hcre Excel Excel 97, 2000, 2002 ve 2003 gibi, yeni bir kitabn yeni bir alma sayfasnda, her bir hcreye 32,767 karakterlik bilgi kabul eder. Bir sayfada en fazla 65,536 satr olabilir. Excel bilgileri, hcrelerin iine yazlr; bunun iin hcrenin seili olmas gerekir. Bir hcreyi iini tklayarak seiiniz zaman hcrenin ad, Ad Sekmesinin iinde gsterilir. Hcrelerin ad, bulunduklar stunun harfi ve bulunduklar satrn numaras yan yana getirilerek verilir: A1 gibi. Hcre adna Excel dilinde adres, bavuru adresi veya referans denir. Bir hcre seildii anda, o hcrenin stun ve satr balklar da koyu harflerle gsterilir. Excel bilgisinin temel ta, hcreleri tanmak ve tantmaktr diyebiliriz. Excele hesap yaptrmak, bir hcre ile bir dier hcreyi veri al-verii ilikisine sokmak demektir. Baka bir deyile Excel de sadece gzel ve dzenli listeler yapmayacak, sayfalarnza girdiiniz bilgilerle hesaplar yaptracaksanz, bu, bir hcrenin, bir veya daha fazla sayda dier hcrede bulunan bilgileri alp, bunlarla matematik, mal, istatistiksel veya bir baka kategorideki ilemi yapmas demektir. Excelde hcrelerin bavuru adresi, tek hcreler iin rnein A1, birden fazla hcre iin ise grubun, balang ve biti hcreleri, iki nokta st ste iaretiyle birletirilerek (A1:A10 gibi) yazlr. Birden fazla stunu kaplayan ok sayda satr seerseniz, bu grup birinci stunun ilk hcre ile son stunun son hcresinin adyla adlandrlr (A1:D10 gibi). Excel dilinde hcre gruplarna Aralk (Range) denir. (Excel 2000de Excel 97deki Erim kelimesinin terkedildii grlyor!) Excel de bir hcreyi semek iin hcrenin iini tklamanz yeterli. Bir birine komu olmayan hcreleri semek iin, ilk hcreyi setikten sonra, klavyede Ctrl tuunu tutun ve bu kez seilecek dier hcreleri tklayn. Ayn ekilde bir birine komu olmayan hcre gruplarn da seebilirsiniz. Bir hcreyi tkladnz zaman forml ubuunun solunda adres sekmesinde hcrenin adresinin belirdiine dikkat edin. Birden fazla komu hcreyi seseniz de adres sekmesinde bu grubun semeye baladnz ilk hcresinin ad yazl olur. Hcreler arasnda hareket iin klavyedeki hareket tularn kullanabilirsiniz. Yukar ok: Bir hcre yukar Aa ok: Bir hcre aa Sa ok: Bir hcre saa Sol ok: Bir hcre sola Sekme: Bir hcre saa st-karakter (Shift )-Sekme: Bir hcre sola Home: Satrn birinci hcresine Page Up: bir pencere dolusu (ekran znrlnze ve ekrannzn byklne bal olarak, takriben 30-36 satr kadar) yukar. Page Down: Bir pencere dolusu satr kadar aa Ctrl+Home: A1 hcresine Ctrl+end: iinde bilgi olan son satrn son stunda hcreye Ctrl+Page Down: Bir sonraki alma sayfasnn seili hcresine (seili hcre yoksa A1e) Ctrl+Page Up: Bir nceki alma sayfasnn seili hcresine (seili hcre yoksa A1e) Birden fazla hcre seebilmek iin seeceiniz grubun sol st hcresini tklayn; Mouse iaretisini grubun sol alt hcresine kadar srkleyin. Mouse iaretisini braktnz anda, setiiniz hcreler grubunun evresinde kaln bir izgi oluur; sol-st hcrenin zemini beyaz olmak zere dier yelerinin zemini renklendirilir. Bir satrdaki veya stundaki btn hcreleri semek iin, satrn veya stunun baln tklamanz yeterlidir. Birbirine komu satrlarn veya stunlarn tmn semek iin ilk satr veya stunu tklayn; Mouse iaretisini seilecek satr veya stun balklar boyunca srkleyin. Birbirine komu olmayan satr ve stunlarn tmn semek iin, ilk satr

veya stunu tkladktan sonra klavyede Ctrl tuunu tutun ve dier satr veya stunlarn balklarn tklayn. Hcrelerin eni-boyu stun veya satr balklar arasndaki izgiler saa-sola veya yukar aa kaydrlarak deitirilebilir. Forml Excel belgelerini bir kelime-ilem programyla yaplabilen listelerden farkl klan, formlleridir. Forml, bir hcreye girdiimiz ve bize bir sonu bildiren denklemdir. Formlleri, Forml ubuuna, = iaretiyle balayarak yazarz. Formln sonucu, formln bulunduu hcrede gsterilir. Bir formlde u unsurlar bulunabilir: 1. lem iaretleri: art, eksi, arp, bl. (Excel in yardm metinlerinde bunlara ile dendiini greceksiniz.) 2. Hcre veya hcre grubu adresleri (bavuru, referans): A1, B2 A1:A15 gibi 3. Saylar ve metinler 4. Excelin kendi kullanlmaya hazr fonksiyonlar (SUM gibi) Bir hcreye forml, elle girebiliriz. Bunun iin hcreyi seip, forml ubuuna nce eittir (=) iaretini, ardndan formln dier unsurlarn yazarz. rnein, A3 hcresinde A1 deki deerin A2 ye blnmesinin sonucu yer alsn istiyorsak, A3 tklayp forml ubuuna =A1/A3 yazmamz gerekir. Forml giriinin bittiini belirtmek iin klavyeden Enter tuuna basmak veya baka bir hcreyi tklamak gerekir. Formlleri, Mouse iaretisiyle, hcrelere, hcre gruplarna iaret ederek de girebiliriz. Yukardaki rnei iaretleyerek uygulamak iin, A3 tklayp, = iaretini yazdktan sonra, klavyede yukar ok tuuna iki kere basarak, A1 i seilmi hale getirmek, klavyede bl (/) tuuna basmak, tekrar yukar oka basarak A2 yi seilmi hale getirdikten sonra Entera basmak yeter. Bu ilemi yaparken, yukar oklara bastnz srada Excel in A1 ve A2 hcrelerinin evresine kesik izgili bir ereve koyduuna dikkat edin: bu hcrenin bir formlde referans olarak kullanlacann iaretidir. Excelde formlleri zel bir blmde ele alacaz. Makro Nedir? Microsoft Excel'de bir ii sk gerekletiriyorsanz, bu ii makro kullanarak otomatikletirebilirsiniz. Makro, Microsoft Visual Basic modlnde (modl: Bir tek adlandrlm birim halinde depolanan bir bildiriler, deyimler ve yordamlar btn. ki tr modl vardr: standart modller ve snf modlleri.) saklanan ve ii her gerekletirmeniz gerektiinde altrlabilen bir komut ve fonksiyonlar (fonksiyon: Bir deer veya deerleri alan, bir ilemi gerekletiren ve bir deer veya deerler dndren, nceden yazlm bir forml. alma sayfasndaki formlleri, zellikle uzun veya karmak hesaplamalar yapanlar sadeletirmek ve ksaltmak iin fonksiyonlar kullann.) dizisidir. rnein, hcrelere sk sk uzun metin dizileri giriyorsanz, bu hcreleri ilerindeki metinleri kaln, eik ve alt izili ekilde biimleyen bir makro oluturabilirsiniz. Makro kaydetme Bir makro kaydettiimizde Excel, Excel zerinde yaptmz her trl ii veya olay, siz bir dizi komutu gerekletirmisiniz gibi saklar. Bundan sonra, makroyu altrarak komutlarn yinelenmesini veya yeniden yrtmesini salarsnz. Makro kaydederken hata yaparsanz, yapacanz dzeltmelerde kaydedilir. Visual Basic (Visual Basic: Basic in yksek dzeyli bir programlama srm. Visual Basic Microsoft tarafndan Windows tabanl uygulamalar oluturmak iin gelitirmitir.) her makroyu bir alma kitabna ilitirilen yeni bir modlde saklar. Makronun kolay almasn salama Makrolar, Makro iletiim kutusundaki (Aralar mensnden Makro/Makrolar) listeden seerek veya bir butona, fonksiyon tuuna(F6),

2

tu kombinasyonuna(Ctrl+H) hatta grafik nesnesine de(Otomatik ekiller veya resim) atayarak kolayca altrabilirsiniz. Makrolar ynetme Makro kaydettikten sonra hatalar dzeltmek veya makronun ileyiini deitirmek iin Visual Basic Dzenleyicisi (Aralar mensnden Makro/Visual Basic Dzenleyicisi veya ALT+F11)(Microsoft Visual Basic Editor: Kaydettiiniz makrolar dzenleyebileceiniz ve yeni makrolar ve Visual Basic for Applications programlar yazabileceiniz bir ortam.) ile makro kodunu grebilirsiniz. rnein, metni biimlendiren makronun ayn zamanda metni ortalamasn da istiyorsanz, hcrede metni sola yaslamaya yarayan bir makro kaydedebilir ve sonra bu makrodaki ynergeleri metni biimlendiren makroya kopyalayabilirsiniz. Visual Basic Dzenleyicisi, makro kodu yazmay ve dzenlemeyi yeni balayanlar iin kolaylatrmak amacyla tasarlanm bir programdr. Makrolarnzda basit deiiklikler yapmak iin programlama renmeniz veya Visual Basic dilini kullanmanz gerekmez. Visual Basic Dzenleyicisi ile makro dzenleyebilir, makrolar bir modlden dierine kopyalayabileceiniz gibi, farkl alma kitaplar arasnda da kopyalama yapabilir, makrolar saklayan modlleri veya makrolar yeniden adlandrabilirsiniz. Makro gvenlii Excel, makrolarla bulaabilen virslere kar koruma salar. Hazrladnz makrolarn virs iermediinden emin olduktan sonra bir baka bilgisayarda altrabilmeniz iin ncelikle makro gvenlik seviyesini drmeniz gerekmektedir. Bunun iin Aralar mensnden Makro/Gvenlik ve buradan Dk seeneini sememiz gerekmektedir.

3

Blm -2-

MAKROLARA GR

Basit bir makro kayd nasl yaplr? Bir makro kayd yapmak iin Aralar mensnden Makro ve alt sekmesi olan Yeni Makro Kaydet i seelim.

Karnza gelen Makro Kaydet iletiim kutusunda kaydedeceimiz makronun adn, ksayol tanmlamasn, makronun nereye kaydedileceini ve makroyla ilgili aklamalar ayarlayabileceiniz gibi makro kayd bittikten sonrada yapabilirsiniz. Bu yzden biz hibir ayar yapmadan Tamam tklayarak makro kaydn balatyoruz. Kayt baladktan sonra Excel zerindeki yaptmz her ey kaydedilmektedir. Excel bizi kameraya alyor dersek yanl olmaz heralde. Bu kayd durdurabilmemiz iin ise kk bir Kayt Durdur kutucuu alacaktr. Bu kutucuun zerinde iki tane dme vardr. Bunlardan biri Kayd Durdur dieri ise Greli Bavuru dmeleridir. Kayd Durdur, kayt iimiz bittiinde kayd bitirmemize yarayan dmedir. Greli Bavuru dmesi ise, makronun, etkin hcrenin konumuna greli olarak almasn isterseniz, makroyu, greli hcre bavurular kullanarak kaydedebilirsiniz. Siz Excel den kncaya veya Greli Bavuru yu yeniden tklatp seimini kaldrncaya kadar, Excel greli bavurular kaydetmeye devam eder. Kaydedilmi bir makronun altrlmas Daha nce kaydettiimiz bir makroyu altrmak iin daha nceki konular da bahsettiimiz gibi eitli yollar vardr. imdilik bunlardan bir tanesini greceiz. Bunun iin Aralar mensnden Makro/Makrolar veya Alt+F8 e basalm. Karmza gelen bu pencerese daha nce kaydettiimiz makrolarn

4

listesini ve bu makrolarla ilgili ayarlar grebilirsiniz. altrmak istediiniz makroyu seip altr dmesine tkladnzda kaydettiiniz makro alacaktr. Bu penceredeki dier elemanlara da bakacak olursak; Admla, setiimiz makronun iinde yer alan kodlar tek tek altrr. Yani kaydederken yaptmz olaylar Admla ile tek tek altrabiliz. Bunun bize faydas, istediimiz yerde almasn durdurabilir, atlatabilir veya yanl yaptmz yerleri kolayca yakalamamza yardmc olur. Dzenle, setiimiz makronun kodlarn dzenleyebilmemiz iin Visual Basic Dzenleyicisini aar. Burada kodlar zerinde her trl deiiklik yaplabilir. Bu konu ileriki konularda ayrntl bir ekilde anlatlacak. Sil, seili olan makroyu siler. Seenekler, seili makronun ksayol tanmnn ve aklamasnn yapld alanlar ierir. Makro yeri ise, makronun nerede alacan belirler. Bir makronun ksa yoldan altrlmas Makro altrma yntemlerinden basite olann bir nceki konuda grdk. Ksayol tularyla altrmak iin ksayol tanmnn nasl yapldnda daha nce grmtk. Bunu altrmak iin tanmladmz ksayol tularna basmamz yeterli olacaktr. Dier bir yntem ise grafik nesneler veya resimlere makro atamak ve daha sonra bu nesnelere bir kez tklayarak ilgili makroyu altrmak. Bunun iin Grnm mensnden Ara ubuklar na oradan da izim i seelim. alma kitabmzn alt tarafna izim ara ubuu otomatik olarak yerleti. imdi bu ubuktaki Otomatik ekil den herhangi bir ekli seelim ve sayfamza bir tane izelim. Bu ekil zerinde Mouse ile sa tklayn ve Makro Ata y sein. Alan pencerede daha nce kaydettiiniz makrolarn listesi yer almaktadr. Bunlardan atamak istediinizi seip Tamam a tklayn. Artk o ekil zerine bir kez tkladnzda makronuz alacaktr. Eer daha nce kaydettiiniz makro yoksa bu alan pencereden direkt olarak makro kaydedebilirsiniz ve atama otomatik olarak yaplcaktr. Ayn ilemleri bir resime veya sayfa zerinde duran herhangi bir nesneyede uygulayabilirsiniz. Makrolarn butona tklanarak altrlmasna Blm -3- te geni bir ekilde yer verilecektir.

5

Blm -3-

NEML ARA UBUKLARI VE ELEMANLARI

Formlar Ara ubuu Bu ubuk zerinde bulunan elemanlarn zellikleri makro atanabilmeleri ancak ilerine makro yazlamamasdr (iine makro yazlmas ileri konularda anlatlacak). Bizim burada kullanacamz elemanlar unlardr; Dme, Etiket, Onay Kutusu, Seenek Dmesi, Liste Kutusu, Alan Kutu, Kaydrma ubuu, Deer Deitirici ve Grup Kutusu. Dme: Bu eleman kullanmak iin Formlar ara ubuundan Dme yi semek yeterlidir. Seili iken sayfaya bir kez tklayn, dme otomatik olarak sayfaya yerleecek ve ardndan Makro Ata penceresi alacak. Buradan yeni makro kayd, makro atamas veya elle makro yazabilirsiniz. Yeni bir makroyu Dme yoluyla oluturmak daha ksa bir srede ve ok daha kolay bir ekilde yaplabilir. Dolaysyla Blm -2- deki ilemlerin bir ouna gerek kalmaz. Dmenin adn, zerine bir kez tkladktan sonra deitirebilirsiniz. Etiket: Formlar ara ubuunun stndeki dier elemanlar etiketlendirmek iin kullanlr. Etiket adn, zerine bir kez tkladktan sonra deitirebilirsiniz. Onay Kutusu Genellikle oklu seimler yapmak iin kullanlr. Bu elemann seili olup olmad DORU YANLI deerleriyle belirlenir. Bunun iin ilk nce bir hcre balants yaplmaldr. Balanty yapmak iin elemann zerine sa tklanp Denetimi Biimlendir seilmelidir. Karnza gelen Kontrol Biimlendir penceresinden Denetim sekmesini sein. Orada bir takm seenekler vardr. Bunlardan Hcre Balants ksmna balantnn yaplaca adres yazlr. Adresi otomatik yazdrmak sa tarafndaki butona basp alan istiyorsanz bu kutunun pencereyi kapatmadan bir hcre seip Enter tuuna basarak adresi alabilirsiniz. Bylece hcre balants yaplm olur. Bu pencerede bulunan dier seenekler ise unlar; aretlenmemi, yani Onay Kutusu bo ve Hcre Balantsnn oluturulduu hcrede YANLI yazar. aretlenmi, yani Onay Kutusu iaretli ve balant yaplan hcrede DORU yazar. Dier bir seenek ise Karma, bu da hi manasna gelmektedir. Yani her ikiside deil ve balant yaplan hcrede #YOK yazar. Balantl hcre bosa Excel Onay Kutusunun durumunu YANLI olarak yorumlar. 3-B Glgelendirme, Onay Kutusunu 3 boyutlu glgelendirme efektiyle grntlenmesini salar. Seenek Dmesi Tek sonucu olan seenek sunumlarnda kullanlr. Bu elemann seili olup olmad ka tane Seenek Dmesi varsa ona gre sra numaras alr. Bunun iin hcre balants yaplr. Hcre balants Onay Kutusu ile ayn ekilde yaplr. Liste Kutusu Srekli olarak kullandnz verileri bir listede tutmak ve istediiniz zaman rahatlkla o veriyi bulup gerekli bilgilere eriebileceiniz bir form eleman. Listedeki her elemann bir sra numaras vardr. Ve bu sra numaras hcre balants yapldnda alaca deerdir. Hcre balants dier form elemanlar gibi Denetim Biimlendir iletiim kutusundan yaplr. Burada Girdi Aral ksmna listede yer alacak olan verilerin bulunduu adres yazlr. Hcre Balants ksmna ise dier form elemanlar gibi bir balant hcresi seilir. Hangi elemann seili olduu bu adresten bulunur. Seim Tr Birden ok yada Geni ayarlanrsa Hcre Balants kutusunda belirtilen hcre gz ard edilir. Liste kutusunun grevi en iyi aadaki rnekle anlalacaktr. Sayfa 2 nin A stununa 5 tane il ad, B stununa o ilin trafik kodu ve C stununun C1 hcresini de Liste

6

Kutusunun hcre balant adresi olarak belirtelim. imdi de listeden seilen ilin trafik kodunu reneceimiz hcre formln yazalm. Sayfa 1 de Liste Kutusunun hemen yanndaki hcreye gelelim ve unlar yazalm; =NDS(Sayfa2!B1:B5;Sayfa2!C1;1) ndis formlnn grevi bir tablo yada aralktan bir deer yada deere yaplan bavuruyu vermektir. Bu forml trafik kodunun yazdrlaca hcreye girildikten sonra o hcrede hangi il seilmise ona ait trafik kodu yazacaktr. Alan Kutu Bu form elemann Liste Kutusundan tek fark Alan Satrlar kutusudur. Bu da alan listede ka tane elemann grntleneceini belirtmemize yarar. Bunun dnda her trl kullanm Liste Kutusuyla ayndr.

Kaydrma ubuu Bu form elaman kaydrma oklarn tklattnz veya kaydrma kutusunu srklediinizde belirttiiniz deer aral boyunca kaydrma ilemi yapar. Kaydrma kutusuyla kaydrma oku arasna tklatarak, deerler sayfas boyunca hareket edebilirsiniz. Deer atamak iin elemann zerinde sa tklayp Denetimi Biimlendir seenei seilerek denetim tabna geilir. Burada gerekli dzenlemeler yaplr. Geerli deer, Kaydrma kutusunun kaydrma ubuundaki ilk deeridir. En kk deer, Kaydrma ubuunun en kk deerinin belirlenmesi. En byk deer, Kaydrma ubuunun en byk deerinin belirlendii yer. Art deeri, Kaydrma ubuunun ularndaki ok iareti tklatldnda, kaydrma kutusunun hareket ettii mesafe miktar. Sayfa deiimi, Kaydrma kutusuyla kaydrma oklarnn birinin arasnda tklattnzda, kaydrma kutusunun hareket ettii mesafe miktar. Hcre balants, Kaydrma kutusunun hangi hcreyle ilikilendirileceini belirleyen blmdr. 3 Boyutlu Glgelendirme, Kaydrma ubuunu 3 boyutlu glgelendirme efektiyle birlikte grntler. Deer Deitirici Deeri artrr veya azaltr. Deeri artrmak iin yukar okunu, azaltmak iin aa okunu tklatn. Yine bu eleman bir hcreye balamak iin elemann zerine sa tklayp Denetimi Biimlendir seilerek Denetim sekmesinde gerekli ayarlar yaplr. Hcre balants ksmna balamak istediiniz hcrenin adresini veya o hcreyi gidip semekle o hcrenin adresini yazm olursunuz. Denetim Ara Kutusu Denetimler, veri grntlemek veya girmek, bir eylem gerekletirmek veya formu daha kolay okunabilir hale getirmek iin bir forma yerletirdiiniz grafik nesneleridir. Bunlar yandaki ekilde grld gibi Metim Kutusu, Komut Dmesi, Seenek Dmesi vs. nesne elemanlarndan olumaktadr. Denetimler kullanclara seilecek seenekler veya tklatlacak dmeler sunar; bunlar makrolar veya web kodlarn altrr. Microsoft Excel iki tr denetime sahiptir. ActiveX Denetimleri(ActiveX denetimi: Onay kutusu veya dme gibi kullanclara seenekler sunan veya bir grevi otomatikletiren makrolar veya komut dosyalarn altran bir denetim.) birok durum iin uygundur ve hem Microsoft Visual Basic for Application (VBA: Microsoft Visual Basic'in Windows uygulamalarn programlamak iin kullanlan ve baz Microsoft uygulamalaryla birlikte gelen makro dili srm.) makrolar hemde web kodlar ile alr. imdi ksaca bu denetimler nelerdir ve kullanmlar hakkndaki bilgileri grelim. Design Mode (Tasarm Modu) Bu dme tasarm moduna gemek veya tasarm modundan kmak iin kullanlr. Bir tasarm dan veya programlamadan sonra programmz altrabilmemiz iin tasarm modundan kmamz gerekir.

7

Properties (zellikler) Bu dme seili denetim elemann zelliklerine eriebilmemize yarayan pencereyi aar. Burada bulunan ayarlara ilerideki konularda daha geni bir ekilde yer verilecektir. View Code (Kod Grntle) Bu dme seili denetimin kodlarn grntlememize yarar. Denetimlerin zerlerine ift tklandnda yine ayn yer alacaktr. Check Box (Onay Kutusu) kutusuyla ayn ie yarar. Text Box (Metin Kutusu) Bu denetim Formlar Ara ubuunda bulunan onay

Bilgi girii iin kullanlan denetimdir. Tklandnda eylen, olay balatan denetimdir. Seenek grubundan bir seenek belirlenmesine

Command Button (Komut Dmesi) Option Button (Seenek Dmesi) yarayan denetimdir.

List Box (Liste Kutusu) erisinde srekli kullanlacak olan bilgileri tutar. Gerek duyulduunda listeden istenilen eleman seilecek bilgiye ulalr. Combo Box (Karma Kutu) Liste Kutusunun alabilir olandr. Tklatlnca basl kalan, yeniden tklatlnca da

Toggle Button (Deitirme Dmesi) serbest kalan dme.

Spin Button (Dndrme Dmesi) Hcreye veya metin kutusuna ilitirilebilen dmedir. Deeri artrmak iin yukar, azaltmak iin aa okunu tklanr. Scrool Bar (Kaydrma ubuu) Kaydrma oklarn tklattnz veya kaydrma kutusunu srklediinizde deer aral boyunca kaydrma ilemi yapmaya yarayan denetimdir. Label (Etiket) alma sayfas veya forma denetim, alma sayfas veya form hakknda bilgi salamak iin eklenmi metin. Picture (Resim) Forma resim kattran denetimdir.

Additional Controls (Dier (Ek) Denetimler) Ek ActiveX Denetimlerinin listesinin grntlenmesine yarar. Alan listeden istediinilen farkl bir denetimi seerek forma eklenebilir. Formlar ve Denetim Ara ubuklarnn Karlatrlmas ActiveX Denetimleri Hakknda Ne zaman kullanlr : ActiveX Denetimini birok evrimii form iin kullann, zellikle denetim kullanldnda meydana gelen farkl olaylar denetlemeniz gerektiinde. rnein, alma sayfasna liste kutusu denetimi ekleyebilir ve sonra da kullancnn listeden yapt seime bal olarak farkl eylemler gerekletirecek bir makro yazabilirsiniz. Denetimler ne yapabilir : ActiveX denetimleri, Microsoft Visual Basic gibi programlama dillerinde bulunan denetimlere benzer ve Visual Basic Dzenleyicisi'ndeki zel formlara ekleyebileceiniz denetimlerle ayndr. Bir alma sayfasna ActiveX denetimi eklediinizde, denetim tklatldnda altrlacak bir makro atamann aksine, denetimin kimlik numarasna referans eden makro kodu yazarsnz. Formun bir kullancs denetimi kullandnda, kodunuz alr ve meydana gelen tm olaylar iler. Denetimler ne yapamaz : ActiveX denetimlerini grafik sayfalarnda veya XLM makro sayfalarnda kullanamazsnz. Bu tip durumlarda, Formlar ara ubuu denetimlerini kullann. Dorudan denetimden alan bir makro eklemek istiyorsanz, bir Formlar ara ubuu denetimi kullann.

8

zel zmlerdeki ActiveX denetimleri : ActiveX denetimlerinin, zelletirebileceiniz zellikleri vardr. rnein, bir kullanc denetimin zerine geldiinde iaretinin alaca grnm belirleyebilirsiniz. ActiveX denetimleriyle ilikili olaylara yant olan makrolar yazabilirsiniz. ActiveX denetimlerini hem Excel formlarnda hem de VBA programlarndaki formlarda ve iletiim kutularnda kullanabilirsiniz. Web sayfalarndaki ActiveX denetimleri : Web sayfalarna koymay planladnz Excel formlar ve verileri iin, ActiveX denetimleri dahil edebilir ve denetimler bir Web taraycsnda kullanldnda alacak Web kodlar (makro kodundan baka) yazabilirsiniz. Kodlar Microsoft Kod Dzenleyicisi'ni kullanarak Excel'de VBScript (Visual Basic Scripting Edition) programnda yazabilirsiniz. Denetimler nerede bulunur : ActiveX denetimleri salayan bir ara ubuudur. Bu denetimlerin bazlar Formlar ara ubuu denetimlerine benzemektedir ve deitirme dmeleri ve resim denetimleri gibi dierleri Formlar ara ubuunda kullanlamaz. Denetim Ara Kutusu ayn zamanda dier programlar tarafndan yklenen zel ActiveX denetimleri ierir, rnein Microsoft Internet Explorer tarafndan yklenen etkin film denetimi. Form Denetimleri Hakknda Ne zaman kullanlr : Bir forma ilikin tm makrolar kaydetmek istiyorsanz ama hibir makro kodunu VBA'da yazmak veya deitirmek istemiyorsanz Formlar ara kutusundan bir denetimi kullann. Ayrca grafik sayfalarndaki Formlar ara kutusu denetimlerini kullanabilirsiniz. Denetimler ne yapabilir : Bu denetimler dier kullanclarn Microsoft Excel kullanarak doldurduu alma sayfas formlarnda kullanmak iin tasarlanmtr. Varolan bir makroyu bir denetime ilitirebilir ya da yeni bir makro yazabilir veya kaydedebilirsiniz. Formun bir kullancs denetimi tklattnda, denetim makroyu altrr. Denetim neler yapamaz : Formlar ara ubuu denetimleri, ActiveX denetimlerinin kullanlabildii gibi, olaylar denetlemek iin kullanlamaz. Buna ek olarak, Formlar ara ubuu denetimleri web sayfalarnda web kodlar altrmak iin kullanlamazlar. Denetimler nerede bulunur : Formlar ara ubuu denetimleri Formlar ara ubuunda bulunur. rnekler: Form denetimi: rneimiz de hcrelere girilmi on saynn toplamn bulacaz. lk nce alma sayfamza bir tane Dme getirip brakalm ve kan pencereden Kaydet i sonraki pencerede ise Tamam tklayalm. Daha sonra makro kaydn durdurmak iin Aralar/Makro/Kayd Durdur u seelim ve kayd durduralm. Tekrar ayn menye girip bu kez Makrolar seelim. Alan pencereden kaydettiimiz makroyu seip Dzenle ye tklayalm. Karmza VBA kodlarn yazacamz kod penceresi geldi. Kod penceresinde yeil ile yazlm olan ksmlar aklama satrlardr bunlar silebilirsiniz. imdi aadaki kodlar yazalm. Sub makro1() For i = 1 To 10 1den 10 a kadar dng alyor. Top = Top + Cells(i, 1) deikene dng her dndnde deer atanyor Next i dng kapatlyor MsgBox Top sonu mesaj olarak kullancya bildiriliyor. End Sub

9

ActiveX denetimi : Bu rneimizde on satrdan ka tanesinin dolu ka tanesinin bo olduunu bulup E1 hcresine dolu hcre saysn E2 hcresine ise bo hcre saysn yazdrtalm. Bunun iin Denetim Ara ubuundan CommandButton u alma sayfamza getirelim. Ve CommandButton un zerine ift tklayarak kodlar yazacamz pencereye ulaalm. Buraya aadaki kodlar yazalm. Private Sub CommandButton1_Click() For i = 1 To 10 If Cells(i, 1) "" Then Eer hcreler dolu ise dolu deikeni bir arttrlyor dolu = dolu + 1 End If dng kapatlyor If Cells(i, 1) = "" Then Eer hcreler bo ise bos = bos + 1 bos deikenin bir arttrlyor End If dng kapatlyor Next i Cells(1, 5) = dolu dolu deeri E1 hcresine Cells(2, 5) = bos bos deeri E2 hcresine yazdrlyor. End Sub imdi programn alabilmesi iin Design(Tasarm Modu) nun kapatlmas gerekiyor. Kapatmak iin Denetim Ara ubuundan tasarm modu butonunu sein.

10

BLM -4-

VBA (Visual Basic for Applications)

Microsoft Visual Basic in Windows uygulamalarn programlamak iin kullanlan ve baz Microsoft uygulamalaryla birlikte gelen makro dili srmdr. Dili Visual Basic ile birebir ayn olmasa da komutlarn kullanm birebir ayndr. Gze arpan en byk fark VBA nn Form2 Componentlerini kullanmasdr. Mesela Visual Basic te ki metin kutusunun ad Text iken VBA da TextBox, alr kutu Combo iken VBA da ComboBox dr.

VBA (Visual Basic for Applications) Componentleri ile alma Excel de makro yazabilmek iin VB editr kullanlr. Dolaysyla makro daki bir ok komut VB komutlaryla ayndr. VB editrn amak iin Aralar mensnden Makro seeneinin alt mensnden Visual Basic Dzenleyicisi seilir. Yada Alt+F11 tu kombinasyonlar kullanlr. Ekrana gelen VB editrnde sol tarafta Project-VBAProject penceresinde alm olan btn sayfalarn isimleri mevcuttur. Standart 3 sayfa olduu iin Sayfa1 (Sayfa1), Sayfa2 (Sayfa2), Sayfa3 (Sayfa3) eklinde yazldr. Ayrca ThisWorkbook seenei o anki alma kitabn temsil etmektedir. Yine sayfann sol tarafnda sayfalara ait Properties ler (zellikler) penceresi yer almaktadr. Bu blmden projenizdeki elaman ve nesnelerin zelliklerini deitirebilirsiniz. Sayfann st orta tarafnda ise yan yana iki tane alr kutu mevcuttur. lk bata bunlarn birinde General, dierinde ise Declerations yazldr. General blmnden WorkSheet seildiinde alma sayfasnn olaylar ksmna gei yaplyor. Sa taraftaki alr kutuda ise alma sayfasna ait olaylar listelenmitir. Burada yaplan projeyi altrmak iin RUN mensnden Run seilir veya F5 tuu ile program altrlr. VB editrnde birok VB elemanlarn kullanbilirsiniz. Component lerin (Bileen) Genel zellikleri Name : Elemann program ierisinde kullanlaca ismidir. Bu isim bir deiken gibi kullanlacandan Trke karakter ve ilk karakterde say kullanlmamaya zen gsterilmelidir. BackColor : Elemann arka zemin rengidir. BorderColor : Elemann kenarlk rengini belirler. BorderStyle : Elemann kenarlk tipi buradan belirlenir. Caption : Elemanlarn zerinde yazan isimlerdir. Tke karakter alabilir ve istenilen karakterle balayabilir. Enabled : Deer True ise eleman aktif, False ise pasif olur ve rengi pasif bir renk olur. Font : Elemann yaz tipini, boyutunu ve biimini belirlemenize yarar. ForeColor : Yaz rengini belirler. Height : Elemann yksekliini belirler. HelpContextID : Programda Help (Yardm) dosyas kullanlm ise help dosyasndaki balk numaralarn bu kontrole atamaya yarar. Left : Elemann Forma gre sol tarafa olan mesafesini belirler. Locked : Elamann kilitlenmesini salar. Enabled zelliinde olduu gibi rengi pasiflemez yalnzca kontrol kilitlenir.

11

MousePointer : Mouseun eleman zerine gittiinde alaca cursor (imle) stilidir. PasswordChar : Bu zellik yalnzca TextBox larda kullanlr. Eer TextBox a ifre girii yaplacaksa bu zellikte bir karakter belirlenmelidir. Picture : Seili kontrole resim eklenmesine yarar. PictureAlignment : Picture zelliinden eklenmi resmin istee gre yerletirilmesini salar. PictureSizeMode : Eklenen resmin boyutu buradan belirlenir. ScrollBars : Kaydrma ubuunun yerini belirler. ShowModal : Excel 2000 srmnden sonraki versiyonlar da gelen bu zellik, deeri False ise Form ile alrken Excel ile de alabilirsiniz. Deeri True ise Form ak iken Excel ile hibir ekilde alamazsnz. SpecialEffect : Elemana grsel baz efektler katar. Kabartma, basklk vs StartUpPosition : Bu zellik sadece Form elemannda kullanlr. Form aldnda ekrann neresine geleceini belirler. Ekrann ortas gibi TextAlign : zerindeki yaznn saa, sola ve ortala gibi ayarlarnn yapld zelliktir. Visible : Deeri True ise eleman ekranda grnr, False ise eleman form zerinde grnmez. Width : Kontroln geniliini belirler. Yukardaki zelliklerin dndaki zellikler ilgili kontrol anlatlrken anlatlacaktr. Form Projenize form eklemek iin VB editrnde Insert (Ekle) mensnden UserForm seilir ve yeni bir form eklenir. Eklenen form ile birlikte gelen Component Palet ise bizim form zerinde kullanacamz elemanlar iermektedir. Eklenen formun zellikleri yan taraftaki Properties penceresinden deitirilir. Projenize baka formlar eklemek iin tekrar Insert mensnden UserForm seilir ve ikinci bir form eklenir. Eklenen formlar yan tarafta Project penceresinde Forms seenei altna srayla listelenecektir. Burada istenildii zaman istenilen formu zerine ift tklatlarak o forma gei yaplabilir. Bu aamada program altrdnzda bo formun alr halini greceksiniz. Formu kapatnca program da kapanacaktr. Bir formdan dier forma gei yapmak iin Form2.Show, alan formu kapatmak iin UnLoad Me, aktif formu gizlemek iin Me.Hide, gizlenen formu tekrar gstermek iin Me.Show ve ana formu kapatmak iin End kullanlr. Me yazlan yerlere istenilen bir formun adda yazlabilir. rnein, Form3.Hide Events (Olaylar) Events, Windows ta bir nesneye tklamak, mouseun bir nesne zerine gelmesi halinde aklama ifadelerinin grntlenmesi, iconlarn tanmas olay, bir dosyann fare ile tklatlarak bir yerden baka bir yere alnmas olay, mouseun baz blgelerde gezinmesi halinde eklinin deimesi, mouseun tular basl tutularak izim yaplmas vb. gibi yaplan her hareket bir olay temsil eder. Form ve Form zerinde bulunan her kontrol eleman ift tklatlarak o elemana ait kod penceresine ve olay prosedrlerine ulalr. rnein form zerine ift tklarsanz aadaki resimde grld gibi Form elemannn Click olayna gelirsiniz.

12

Dier olaylara ulamak iin ise yukardaki resimde grld gibi sa tarafta bulunan alr kutu kullanlr. Burada her componente gre deien olaylar vardr. Mesela Activate olay yalnzca Form elemannda vardr. imdi Form elemanna ait baz olaylara deinelim. Activate Deactivate : Programnz da birka form varsa bu formlardan ayn anda yalnz biri aktiftir. Aktivitenin programdaki formlardan dierine gemesi durumunda aktiviteyi kaybeden formun Deactivate olay, aktif olan formun da Activate olay meydana gelir. Bu olaylar yalnz sizin programnzdaki formlar aras geite meydana gelir. Windows altnda alan baka bir programn aktiviteyi ele geirmesi veya kaybetmesi bu olay meydana getirmez. AddControl - RemoveControl: Form zerine kodlarla yeni bir kontrol yani component eklendiinde AddControl olay meydana gelir. Mesela forma yeni bir TextBox eklendiinde bu olay meydana gelecektir. Form zerinden bir component yine kodlarla kaldrlmaya alld zaman RemoveControl olay meydana gelir. Click : Form zerine tklandnda meydana gelir. DbClick : Form zerine ift tklandnda meydana gelir. Error : Form ile ilgili herhangi bir hata ktnda bu olay meydana gelir. Exit : Elemandan kld zaman gerekleen olaydr. Yani eleman kontrol kaybedince bu olya meydana gelir. Initialize : Formun alnda meydana gelir. Mesela programn alnda Programa ho geldiniz gibi bir mesaj verdirtmek isterseniz bu olay kullanmanz gerekecektir. KeyPress KeyDown - KeyUp : Eer programda kullandnz genel tular varsa bunlarn kontrolne bu olaylara yazacanz kodla salayabilirsiniz. KeyPress, tua bastnz zaman KeyDown, tu basl olduu srece KeyUp, tu brakld zaman meydana gelir. MouseDown MouseUp MouseMove : Bu olaylarda mouseun kontrolnde kullanlr. MouseDown, mouseun tuu basl iken MouseUp, mouseun tuu brakld zaman MouseMove ise formun zerinde mouse gezerken meydana gelir. QueryClose : Terminate olayyla ayn ii yapar ancak formun kimin tarafndan kapatlmaya alldn da renebilirsiniz.. Ayrca bu olay Terminate olayndan nce meydana gelir ve burada Cancel=True ile kapatma iptal edilirse Terminate olay meydana gelmez. Mesela formun kapatma kontrol dmesinden kapatlmaya alldnda mesaj vererek kullancnn formu kapatmasn aadaki kodlarla nleyebiliriz. Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If vbFormControlMenu = 0 Then Kapat dmesine basld kontrol ediliyor. MsgBox "Program Kapatmak in Ltfen k Dmesini Kullannz" Cancel = True Kapatma olay iptal ediliyor End If End Sub

13

ReSize : Formun boyutunun deitirilmesi halinde bu olay meydana gelir. VBA dorudan formun boyutunun deitirilmesine msaade etmeyecektir. O yzden boyutlandrmay kodlarla yapmak gerekiyor. Scroll : Formda bulunan ScrollBarlar kullanldnda bu olay meysana gelir. Terminate : Formun kapatlaca zaman meydan gelir. Label (Etiket) Daha ok kullancya form zerinde bilgi vermek iin kullanlr. Bu nesneye kullanc tarafndan giri yaplamaz. AutoSize zellii True verildii zaman ierisine getirilen bilginin uzunluna gre otomatik olarak boyutlanr. ComboBox (Alr Kutu) Aa doru alabilen liste kontroldr. Genellikle, deerleri daha nceden belli olan elemanlarn seimi iin kullanlrlar. Methods (Metotlar) AddItem Eleman, SraNo : Listeye eleman eklemek iin kullanlan bir metotdur. ComboBox1.AddItem Excel RemoveItem Index : Listedeki index nolu eleman listeden karmaya yarayan bir metottur. lk elemann index numaras 0 olduu iin elemanlarn listedeki yerinin bir eksii index olarak verilmelidir. ComboBox1.RemoveItem 1 Clear : Listenin ieriini temizler. ComboBox1.Clear Properties (zellikleri) ListCount : Liste iindeki eleman saysn verir. MsgBox "Listede" & " " & ComboBox1.ListCount & & "Tane Eleman Var" ListIndex : Listedeki aktif elemann (seili elemann) liste iindeki numarasn verir veya listedeki aktif olacak eleman belirler. Bu eleman ilk eleman iin 0 dr. Son eleman iin ListCount-1 dir. ComboBox1.ListIndex=5 Listedeki 6. eleman seer. List(index) : Liste iindeki index numaral elemann derini renmek veya deitirmek iin kullanlr. ComboBox1.List(1) = Word 2. eleman Word yapar Text : Liste iinde seili olan elemann ieriini verir. Sadece okunabilir bir zelliktir. MsgBox ComboBox1.Text ColumnCount : Bu zellikle alan liste kutusu birka kolon yaplabilir. Deeri 0 ise tek stundur, 0 deil ise listenin genilii verilen sayda stuna blnr ve bir stunun dolmasyla ikinci stuna geilir. Burada her kolonun genilii listenin geniliinin verilen kolon saysna orandr. rnein; ColumnCount = 5 ve Width = 3000 ise her kolonun genilii 3000/5 = 600 olacaktr. TopIndex : O anda ekranda grlen en stteki elemann indexidir. Bu zellik ile listenin o anda ekranda grlen ksmn renebiliriz. ListBox (Liste Kutusu) Bu form eleman ayn ComboBox gibidir. Elemanlar listelemek, sralamak gibi zellikler sunan genel amal bir kontroldr. Methods (Metodlar) Metodlarn tm ComboBox ile ayndr.

14

Properties (zellikler) MultiSelect (oklu Seim) Bu zellik bir kutu iinde birden fazla eleman seme imkan verir. deiik modu vardr. 0 : Birden fazla eleman seimi yaplamaz. 1 : Mouse ile tklanan her eleman seilir veya seilmise seilmilii kaldrlr. 2 : Bu modda Shift veya Ctrl tuu basl tutularak birden fazla seim yaplr. SelCount, Selected (Index) MultiSelect zellii 0 olmayan listelerde birden fazla eleman seilebilecei iin SelCount zellii ile seili eleman saysn, Selected (Index) zellii ile de Index numaral elemann seili olup, olmad renilebilir. Seili olan elemanlar renebilmek iin listeyi batan sona tarayacak bir dng oluturulur ve Selected zellii ile her elemann seili olup olmad kontrol edilir. Dim i For i=0 to ListBox1.ListCount 1 If ListBox1.Selected(i) Then MsgBox ListBox1.List(i) & eleman seili End If Next i rnek : Amacmz form zerinde bulunan metin kutularndan girilen bilgilerin listelere eklemek ve her listede bilgi bulunduu iin listeden bir eleman seildiinde dier listelerdede ona ait bilgilerin seilmesi gerekmektedir. imdi form zerine tane TextBox, tane ListBox ve bir tanede CommandButton yerletirelim. Private Sub CommandButton1_Click() ' Listelere bilgiler ekleniyor ListBox1.AddItem TextBox1.Text ListBox2.AddItem TextBox2.Text ListBox3.AddItem TextBox3.Text MsgBox "Bilgiler Eklendi" End Sub

Listelere elemanlar ekledik. imdi ListBox1 tklandnda dier listelerdeki seilen elemana ait olan bilgilerin seilmesini salayalm. Private Sub ListBox1_Click() Dim a, b a = ListBox1.ListIndex a deikenine ListBox1in index numaras atanyor. b = ListBox1.TopIndex b deikenine ListBox1in topindex numaras atanyor. ListBox2.ListIndex = a Listbox2 nin index numaras listbox1 ile eitleniyor. ListBox2.TopIndex = b Listbox2 nin topindex numaras listbox1 ile eitleniyor. ListBox3.ListIndex = a ListBox3.TopIndex = b End Sub

15

CheckBox (Onay Kutusu) Onaylama ilemlerinde kullanabilen bir kontroldr. rnein, MultiLine zellii True yaplm bir metin kutusundaki yazlar Kaln, talik, ve Alt izili metin biimine getiren kk bir program yapalm. Formumuzun grnts aadaki gibi olsun.

Private Sub CheckBox1_Click() If CheckBox1.Value = True Then TextBox1.Font.Bold = True Else TextBox1.Font.Bold = False End If End Sub Private Sub CheckBox2_Click() If CheckBox2.Value = True Then TextBox1.Font.Italic = True Else TextBox1.Font.Italic = False End If End Sub Private Sub CheckBox3_Click() If CheckBox3.Value = True Then TextBox1.Font.Underline = True Else TextBox1.Font.Underline = False End If End Sub

'CheckBox1 in seili olup olmad kontrol ediliyor. 'Seili ise ierik Kaln ' seili deilse ' normal formatta kalyor.

OptionButton (Seenek Dmesi) CheckBox dan farkl olarak birden fazla seimlerde sadece bir tanesini seebilmemize olanak sunar. rnein yukardaki rnee gre seeneklerden sadece bir tanesini seebiliriz. CommandButton (Komut Dmesi) Bir olayn kullanc tarafndan balatlmas iin programlarda ok kullanlan kontrollerden biridir. Default zellii True ise o dmenin bulunduu form zerinde Entera baslmas durumunda o dme tklanm gibi olur. Cancel zellii de Default gibidir ancak ESC tuu ile aktif hale gelir. Cancel zellii True olan bir komut dmesinin bulunduu formda ESC tuuna baslmasyla bu komut dmesi aktif yaplm olur.

16

ToggleButton (Tahta Dme) Basld zaman basl olarak kalan, tekrar basldnda eski haline dnen buton tipidir. Basldnda deeri True geri brakldnda ise False deerlerini alr.

Frame (ereve) Bu kontrol tek bana deil, dier kontrolleri gruplandrmak iin kullanlr. Kontrolleri bu kontrolle gruplamann bir ok avantaj vardr.

Bu ereveler iine konan elemanlar, ereveye bamldrlar ve konumlar bu ereve dna taamaz. zellikle birka kontrol birden grnr veya grnmez yapmak iin herpsinin Visible zelliini tek tek deitirmek yerine erevenin Visible zellii deitirilerek ereve iindeki tm kontroller ayn anda grnmez yaplabilir. Ayn durum tama iinde geerlidir her birini tek tek tamak yerine ereve tanr. erevelerin buna benzer birok faydalar vardr. zellikle OptionButton larn kullanlmasnda ereve kullanmak zorunlu hale gelebilir. MultiPage (oklu Sayfa) Tek formda ok fazla bilgi girilecei yerlerde kontoller form zerine smayacaktr. Bunun iin MultiPage kullanmak en iyi zmdr. Tek kontol zerinde birden fazla sayfa ekleyerek yerden ve zamandan tasarruf salanabilir. Kontrol ilk eklendiinde zerinde iki adet sayfa tab bulunur. Bunlar tablarn sa tarafna sa tklanp New Page seilerek oaltlabilir. Daha nce eklenmi bir sayfay kaldrmak iin yine ayn alan menden Delete Page, adn deitirmek iin Rename ve yerini deitirmek iin ise Move seilir.

ToolBox zerinde bulunan mevcut kontroller haricinde birok kullanl kontrollerde vardr. Standart olarak gelen ToolBox paletine yeni elemanlar eklemek iin VB kod editrnde iken Tools mensndeki Additional Controls seenei seilerek Additional penceresine ulalr. Additional Controls (Ek veya lave Kontrol) penceresine ksa yoldan da ulalabilir. Kod editrndeki ToolBox penceresinin herhangi bir blmnde sa Mouse tuu ile alan pencereden de Additional Controls mensne ulalabilir.

17

Alan Additional Controls penceresinden istediiniz elaman iaretleyerek projenize ekleyebilirsiniz. Fakat burada bulunan kontroller olduka fazla olduundan bir ounun kullanm iin VB deki grevlerinin tam olarak bilinmesi gereklidir. Bu blmde en ok kullanlan ek kontroller adnn banda Microsoft yazan kontrollerdir. Bu kontroller System32 ierisinde bulunan ocx uzantl ve VB ile de kullanlan komponentlerden olumaktadr. Bu komponentlerin daha ok kullanlmasnn sebebi sistemin otomatik olarak bu elemanlar tanmas ve projelerin baka yerde hata vermeden almasn salamaktr. Ayrca bilgisayarda VB programlama dili de kurulu ise yapm olduunuz Excel projesi sorunsuz olarak ek kontroller ile birlikte alacaktr. Additional Controls penceresindeki Show blmnde Selected Items Only seeneini seerseniz sadece ekli olan komponentler listelenir. areti kaldrrsanz btn komponentler listelenecektir. En ok Kullanlan Ek Kontroller (Additional Controls) En ok kullanlan kontroller banda Microsoft yazl kontroller olduunu daha nce belirtmitik. imdi bunlardan bazlarn rnekler ile inceleyelim. Microsoft Animation Control 6.0 (SP4) Bu komponent bir ilemi yaparken kullancya ilemin yapldna dair grsel bir grnt oluturmas iin kullanlr.rnein bir arama,kopyalama,silme veya bir kullanc girii srasnda durumu animasyon eklinde gstermek iin kullanlabilir. Windows da sk sk karlatmz kontrollerden biridir. Mesela CDROM dan veya Hard Diskten bir yere bir dosya kopyalama veya tanmas srasnda ekrana gelen diyalog penceresindeki animasyon ile ayn grevi grmektedir. Microsoft Common Dialog Control , Versiyon 6.0 Eer projenizi Windows uygulamalar ile btnleik yapmay planlyorsanz bu kontrol ile Windows un standart Dialog pencerelerine ulaabilirsiniz. Form zerine alnan Common Dialog kontroln kullanabilmek iin ksa bir kod yazmanz gerekmektedir. Common Dialog nesnesi Action zelliine atanan saysal deerler ile dialog pencerelerine ulalr. Bu numaralar aada verilmitir. A Dialog Penceresi Farkl Kaydet Penceresi Renk Palet Kutusu Font Dialog Kutusu Yazdrma Dialog Kutusu :1 :2 :3 :4 :5

18

rnek : Formunuzun zerine 6 adet CommandButton ve bir adet Common Dialog nesnesi yerletirin. CommandButon1in Click olayna aadaki kodu yaznz. Private Sub CommandButton1_Click() CommonDialog1.Action = 1 End Sub Formda bulunan dier butonlarn Click olaylarna Action zelliine numaralar srasyla 2, 3, 4, 5, 6 verilerek dier dialog pencerelerine ulalr. Microsoft Masked Edit Control , Versiyon 6.0 Bu kontrol standart TextBox kontrolne benzer. Ancak TextBox kutusu formatl bilgilerin girii durumlarda fazla kullanl deildir. rnein kullancnn doum tarihi girilmesi gereken bir blmde TextBox kullanlrsa kullanc tarihin aralarna . veya / iareti koymakla uraacaktr. Fakat MaskedEdit kontrolnde ise kullanc sadece saylar yazacak ve MaskEdit kontrol bunu tarih formatna evirecektir. Bu kontrol hem kullanc hem de programc asndan byk kolaylklar salamaktadr. MaskEdit kontroln formunuza aldktan sonra sol taraftaki properties ksmndaki Mask ve Format zellikleri ile MaskEdit kontrolnn formatn belirlenir. Yan taraftaki resimde Mask zellii tarih biimi iin ayarlanm bir rnek grlmektedir.

Microsoft MonthView Control 6.0 (SP4) Bu kontrol kullanarak projenize takvim ekleyebilirsiniz. Sadece bir ay eklenebilecei gibi birden fazla ayda grntlenebilir. Kullancdan tarih girmesini istediiniz durumlarda bu kontrol kullanabilirsiniz. MonthView kontrolnn Properties zelliklerinde MaxDate e vereceiniz tarih ile maksimum tarih ve MinDate e vereceiniz tarih ile de minumum tarihi belirleyebilirsiniz. Ayrca MonthColumns zelliine vereceiniz deer, takvime yatay olarak ay eklemenize, MonthRows zelliine vereceiniz deer ise takvimin altna ay eklemenizi salar.

19

Microsoft ProgressBar Control 6.0 (SP6) Bu eleman genellikle uzun bir ilem yaplrken , yaplan ilemin yzdelii hakknda bilgi vermek iin kullanlr. Veya programnzda bir kopyalama veya kaydetme yaparken yapacanz ilem uzun srecekse programnz hareketsiz kalabilir. Bu gibi durumlarda ProgressBar kullanarak kullancy azda olsa oyalayabilir ve ilemin ilerlediini gsterebilirsiniz.

ProgressBar nesnesinin kullanlabilmesi iin Value deerini Min ve Max deerleri arasnda arttrmak gerekir. Properties blmnde Min ve Max deerleri belirlenir ve programda bir dng ile Value deeri artrlr. Eer programnz bir ilem yaparken bunu yapacaksanz o ilemin deerlerini Progressbar da belirtmelisiniz. Microsoft StatusBar Control 6.0 (SP6) ou programda formlarn en altnda o anki durumu gsteren baz bilgiler bulunur. Bu bilgiler formdaki elaman veya alanlar hakknda bilgiler olabilecei gibi kullanc ile ilgili bilgiler veya tarih, saat bilgileride olabilir. StatusBar kontrolne panel eklemek iin Properties blmnde Custom zellii ile alan pencerenin Panels tabna geilir. Burada Insert Panel ile yeni paneller eklenebilir, Remove Panel seenei ile de eklenen paneller silinebilir. Eklenen panellerin hizalama, stil ve bykln bu pencereden ayarlayabilirsiniz. Style blmnde seili panelin ieriini belirleyebilirsiniz. Burada ki 0-sbrText seili ise metin yazabilirsiniz ve dier seenekler seilerek CapsLock, NumLock, ScrollLock, Insert gibi tularn durumunu gsterebilir, Tarih ve Saat grntleyebilirsiniz.

20

Microsoft Tabbed Dialog Control 6.0 (SP5) Projenizde eer birden fazla sayfaya sahip dialog kutusu oluturmak iin kullanlr. Bu kontrol sayesinde ok sayda kontroln form zerinde kullanlmas salanr. Windows altnda bu kontrol kullanan bir ok program grebilirsiniz. rnein, Word programnn Aralar mensndeki Seenekler blmnde bu kontrol kullanlmtr.

Bu kontrol formunuza aldktan sonra kontrol seili iken Properties ksmndan Custom zellii ile alan pencerenin General blmnde yeni tablar ekleyebilir ve bu tablarn Tab Caption (Sekme Etiketi) gibi zelliklerini belirleyebilirsiniz. Yeni tab eklemek iin General blmndeki TabsPerRow ve TabCount seenei ile yan tarafa yeni tablar ekleyebilir, uzunluk ve Style ni deitirebilirsiniz. Microsoft ToolBar Control 6.0 (SP6) Bir ok programda formun st tarafnda ara ubuklar bulunmaktadr. Bu ara ubuklarn ToolBar kontrol ile rahatlkla kendi projenizde oluturabilirsiniz. ToolBar kontrol kullancnn programda girecei yerleri ksa yoldan girmesi iin ve kullanlacak butonlarn belli bir dzen iinde olmas iin kullanlr.

ToolBar kontroln formunuza aldktan sonra Properties blmnden Custom seenei ile alan pencerenin Buttons blmnde yeni butonlar ekleyebilir ve bu butonlarn eitli zelliklerinin deitirebilirsiniz. ToolBar kontrolne eklediiniz butonlar arasnda boluk brakmak istiyorsanz Buttons sekmesindeki seili butonun Style zelliini 3-tbrSeperator olarak ayarlarsanz o buton artk seperator olacak ve iki buton arasnda bir boluk meydana gelecektir.

21

BLM -5-

PROGRAMLAMAYA GEDEKENLER ve VER TPLER

Deikenler Deikenler genellikle bir bilgiyi hafzada tutmak ve gerektiinde kullanmak iin vardr. rnein birine ismini soruyorsanz ve bunu gerektiinde kullanabilmek iin bir deikene almalsnz. Btn programlama dillerin de deikenler bulunur ve deiik ekillerde tanmlanabilir. VBA da deikenlerin kullanm Visual Basic teki gibidir. Deikenler iin nemli bir durum, deikenlerin karkla meydan vermemesi iin tanmlanmas mecburiyetinin olmadr. VBA da deikenleri kullanmadan nce tanmlama mecburiyeti programcnn seimine braklmtr. i=5 j=6 aratoplam = 1000 geneltoplam = i * j + aratoplam rnekte grld gibi aratoplam deikenine 1000 atamas yaplm ve geneltoplam n hesaplanmasnda kullanlmak istenmitir. Tanmlama Kurallar : Deikene verilecek ismin anlalr bir isim olmas programn okunurluunu kolaylatrr. Bir deiken tanmlanrken aadaki kurallara uymak gerekir. Deiken ismi bir harf ile balamaldr. Ad1, Ad2 Doru 1Ad, 2.Ad Yanl Deiken isminde boluk bulunamaz. Bunun yerine alt izgi karakteri kullanlabilir. Ad_Soyad, Doum_Yeri Doru Ad ve Soyad, Doum Yeri Yanl Deiken isminde sadece harfler, rakamlar ve alt izgi karakteri bulunabilir. Al_Yeri, Gr_Yeri Doru Al-Tarihi, Gr.Yeri Yanl Deikene verilecek isim VB komutlarn olumamaldr. Not, Dim, Val, Str, Int, For, While vs. Deiken ismi 255 karakterden fazla olmamaldr. Ogrencinin_Annesinin_Soyadi Doru Veri Tipleri VB de ve VBA da deiken tipleri modern olarak Dim deyimiyle yaplr. Bu deyimin basit format yledir. Dim deg_ismi [(diziboyutu)] As tipi Deg_ismi tanmlanacak deikenin ismidir. Diziboyutu eer deiken bir dizi olarak tanmlanacaksa dizinin boyutu deiken isminden sonra parantezler iine yazlr. Dim a (15) tanmyla 16 elemanl bir dizi tanmlanm olur ve dizinin ilk eleman a(0), son eleman a(15) tir. Bir dizinin ilk eleman 0 olmak zorunda deildir. Dim a(5 to 15) tanmyla ilk eleman a(5) ve son eleman a(15) olan dizi de tanmlanabilir.

22

Ancak Dim kullanlacak bir fonksiyon/altprogram ierisinde dizi tanm yaplamaz. Formun General-Declarations ksmnda veya bir modl iinde tanmlanabilir. Bir fonksiyon veya altprogram iinde Redim veya Static deyimleriyle dizi tanm yaplabilir. Tipi tanmlanacak deiken tipini belirler. VB ve VBA da tip tanm verilmeyebilir. Sadece Dim x eklinde tanmla bir x deikeni tanmlanabilir. Bu tr deikenlere Variant denir ve iinde her trden bilgi bulundururlar. Ancak hz asndan Variant deikenler iyi bir seim deildir. Tipler Byte 1 Baytlk iaretsiz tamsay tipidir. 0 ile 255 arasnda deer alabilir. Integer 2 Baytlk iaretli tamsay tipidir. -32.768 ile 32.767 arasnda deer alabilir. Long 4 Baytlk iaretli tamsay tipidir. -2.147.483.648 ile 2.147.483.647 arasnda deer alabilir. Bu tipe ondalk say atanmas durumunda say en yakn tamsayya yuvarlatlacaktr. Dim i As Integer i = 4.3 i = 4 olarak atanr i = 4.5 i = 5 olarak atanr i = 4.6 i = 5 olarak atanr Single 4 Baytlk ondalk say tipidir. 3.402823x1038 alabilir. ve 1.401298x10-45 arasnda deer

Double 8 Baytlk ondalk say tipidir. 1.79769313486232x10308 ve 4.94065645841247x10-324 arasnda deer alabilir. Currency 8 Baytlk bir ondalk say tipidir. Ancak saynn ondalk ksm 4 basamaktan daha fazla olamaz ve saynn btn dijitleri korunur. Bu tip, daha ok para hesaplar ve virglden sonraki hassasiyeti nemsiz olan ilemler iin dnlmtr. -922337203685477.5808 ile 822337203685477.5807 arasnda deerler alabilir. Ondalk ksmn 4 basamaktan fazla olmas durumunda say yuvarlatrlr. Decimal 14 Baytlk bir veri tipidir. Bu tipin en nemli zellii saydaki btn basamaklarn tutulmasdr. 29 basamakl bir sayy btn dijitleri koruyarak tutabilir. Tam saylar iin, 79228162514264337593543950335 arasnda, ondalk saylar iin, 7.9228162514264337593543950335 arasnda say alabilir. Bu tip dierlerinde farkl olarak Dim deyimi ile tanmlanmaz. Bu tip bir Variant deikene CDec fonksiyonu ile atanabilir. Kullanm, Dim x, y x = 79228162514264337593543950335 MsgBox x y = CDec(79228162514264337593543950335) MsgBox y Saysal olarak tanmlanan tiplerde deiken tipinin snrlar dnda bir deer atanmas durumunda VB ve VBA Owerflow hatas verecektir.

23

Boolean 2 Baytlk bir veri tipi olmasna ramen sadece True ve False deerleri alabilir. Yani daha ok iki durumlu deikenlerde kullanlr. Bu tipten tanmlanan deikenlere direkt True, False deerleri atanabilecei gibi saysal deer de atanabilir. Atanan 0 ise False, deilse True kabul edilir. Bu tipte tanmlanan deikenler programlarn daha anlalr olmas asndan avantajldr. String Karakter snr verilmezse 2 milyar karaktere kadar atama yaplabilen saysal olmayan veri tipidir. Bu tip karakter says +10 byte yer kaplar. Karakter saysn snrn belirlemek iin Dim degisken As String * snr eklinde kullanlr. Bu durumda verilen snr kadar yer kaplar ve en byk snr olarak 65400 verilebilir. Variant VB ve VBA da deiken tanmlanrken tip ismi verilmemise bu tip Variant olarak ele alnr ve deiken tipi atanacak deere gre deiir. Variant tipler yukardaki tiplerden herhangi biri gibi ileme girebilir ve programn almas esnasnda tipi de deitirilebilir. Date 8 Bayt kaplayan bu deikene 1/1/100 ile 31/12/9999 arasnda tarih ve 0:00:00 ile 23:59:59 arasnda saat atamalar yaplabilir. Bu tipteki deikenlere atama bir string gibi veya # # karakterleri arasnda yaplabilir. Aslnda bu deiken ondalk say tipinden tanmland iin bu tipte tanmlanm tarihler arasnda ilem yaplabilir. rnein iki tarih arasndaki gn saysn bulmak iin karma ilemi yaplabilir. Dim i As Date i = 17/11/1973 MsgBox i & tarihinden bu gne kadar & Date i & gn geti Object 4 Baytlk bir veri tipidir ve OLE ilemlerinde kullanlmak zere tasarlanmtr. bu tipteki deikenlere atama yaparken Set operatre kullanlr. Kullanc Tarafndan Yeni Tip Tanmlanmas Yukardaki verilen standart tiplerden kendi tiplerimizide tasarlayabiliriz. Kullanc tanml tipler yle tanmlanr; Type tip_ismi Deg_ismi As Tipi Deg_ismi As Tipi . . End Type Tip tanm bir form ierisinde ancak Private olarak tanmlanabilir. Yani tanmlanan tip sadece o formda kullanlr. Genel yani Public bir tip ise ancak bir modl ierisinde olabilir. Bir form da tip, Private Type Ad .. End Type

24

Global ve Local Deiken Tanm Deikenler genelde iki snfa ayrlr. Global (Genel) deikenler ve Local (Yerel) deikenlerdir. Global deikenler programn btn fonksiyonlar tarafndan kullanlabilirken, Local deikenler sadece tanmlandklar fonksiyonda kullanlr. Global deikenlerin btn fonksiyonlarda kullanlmas grlmesine ramen, programn gelitirilmesi ve takip zorlatrdklarndan dolay ok byk dezavantajlar vardr. ilk bakta avantaj gibi edilmesini nemli lde

Dim deyimiyle yaplan tanmlar tanmland yere gre Global veya Local dr. Dim ile tanmlanan deiken, General-Declarations ksmnda tanmlanmsa tanmland modl/form ierisinde Global dir buna VB ve VBA da Module Level denir. O modldeki/formdaki btn prosedrler bu deikeni kullanabilir fakat dier modller/formlar bu deikeni kullanamaz. Bir fonksiyon yada alt programda tanmlanmsa Local dir. Sadece o prosedr tarafndan kullanlabilir. Bir formun General Declarations ksmnda Public deyimi ile tanmlanmsa dier modller ve formlar da bu deikeni kullanabilir. Ancak deikenin isminden nce modln/formun ismini vermesi gerekir.

Yukardaki birinci resime ait kod penceresinde x Public, y ise Private olarak tanmlanmtr. x ve y deikenlerini birinci resimdeki tm prosedrler kullanabilir. kinci resimdeki prosedrler ise sadece Public olarak tanmlanm x deikenini kullanabilirler ancak deikenin isminden nce formun isminin de verilmesi gerekir. Bir deikeni programn her tarafndan kullanacak ekilde, tam olarak global tanmlamak iin o deikeni bir modln (Insert mensnden Module seilerek eklenebilir) General-

25

Declarations ksmnda Public deyimi kullanlarak tanmlanmaldr. Baka prosedrlerde kullanmak iin modln ismini yazmaya gerek yoktur. Local deikenlerin dier nemli ise bellekte fazladan yer igal etmemeleridir (Statik olarak belirtilmemise). Global deikenler program alt srece bellekte tutulmalarna ramen Local deikenler, deikenin bulunduu fonksiyona girince deiken bellee alnr ve fonksiyonun almas bitince bellekten silinir. Bylece hangi fonksiyon alyorsa sadece o fonksiyonun deikenleri bellekte bulunacaktr. Deikenlerin ve Kontrollerin Tipini Belirlemek Variant tipindeki bir deikenin program ierisinde yaptmz atamaya gre tipinin deitiini belirtmitik. Variant olarak tanmlanm olan bir deikenin hangi tipte olduunu renmek iin VarType fonksiyonu gelitirilmitir. VarType (Degisken) Deiken: Tipi renilecek Variant olarak tanmlanm deiken. Bu deiken herhangi bir tipten bir deikende olabilir. Ancak bu durumda geri dnen deer deikenin tanmland tiptir. Fonksiyondan geri dnn deer deikenin tipini ifade eder ve aadaki deerlerden biridir. Sembolik vbEmpty vbBoolean vbInteger vbLong vbSingle vbDouble vbCurrency vbDate vbString Saysal 0 1 2 3 4 5 6 7 8 Anlam Empty Boolean Integer Long Single Double Currency Date String Sembolik vbObject vbError vbNull vbVariant vbDataObject vbDecimal vbByte vbArray Saysal 9 10 11 12 13 14 17 8192 Anlam Object Error Null Variant DataObject Decimal Byte Array

PROGRAM KONTROL DEYMLER If Yaps If- art yaps btn programlama dillerinde olan, baz artlarn gereklemesi durumunda ve gereklememesi durumunda ayr-ayr kodlarn altrlmasna imkan veren yapdr. If art Then Komutlar Else Komutlar End If artn gereklemesi halinde Then deyiminden sonraki satr iletilir. Gereklememesi durumunda Else deyiminden sonraki satrlar iletilir. artn gereklememesi durumunda alacak Else blou istenirse verilmeyebilir. Ayrca tek satrda art yaplyorsa End If kullanlmaz.

26

Select Case Yaps Bir deikenin ald bir ok deere gre ayr komutlarn altrlmas gereken durumlar iin If yaps yeri Select Case yapsn kullanmak daha avantajldr. Select Case Deiken Case Durum1:Komutlar Case Durum2,Durum3:Komutlar Case Durum4 to Durum7:Komutlar Case is < durum8:Komutlar Case is > durum9:Komutlar .. Case Durum N:Komutlar Case Else Komutlar End Select IIF Bir deikenin deeri iki durumdan birine gre deer alyorsa Bir deikenin deeri iki durumdan birine gre deer alyorsa If yaps yerine IIF kullanlabilir. Bu size daha az satrla ayn ii yapabilme imkan verir. IFF (art;doru ise;yanl ise) Bu fonksiyonda art doru ise birinci ifade, yanlsa ikinci ifade ileme girer. Choose Bir deikenin ald deer bir sayya bal ise Choose yapsn kullanmak daha uygundur. Sonu=Choose(Say,deer1,deer2,deer3,,deerN) formatnda kullanlr. Buradaki sonu sayya bal olarak deer listesinden bir deerdir. rnein say 3 ise sonu deer3 olacaktr. Switch Switch fonksiyonunda ise birden fazla art ayn satrda kontrol etmek mmkndr. Sonu=Switch(art1,Deer1,art2,Deer2,..,artN,DeerN) eklinde kullanlr.

DNG DEYMLER Belirli bir komut parasnn belli artlar gerekleinceye kadar defalarca almas gerekebilir. alma saysnn belli olduu durumlarda For dngs dier durumlarda yani dng saysnn deiken olduu durumlarda ise While-Wend, Do-Loop bloklar kullanlr. FOR Dngs For Saya = BalangDeeri to BitirDeeri [Step Artm] Komutlar Next For dngs sayan balang deerinden balayarak biti deerine kadar sayac birer artrarak Next e kadar olan komutlar altrr. Eer birer artmas deilde sizin belirleyeceiniz aralklarla artp azalmasn istiyorsanz Step parametresinden sonra artm miktarn yazmanz gerekir.

27

Sayacn artarak deilde azalarak almas iin Step ten sonra negatif deer vermeniz gerekir. rnein, A1 stununun 5. satrndan itibaren 10 tane satra satr numaras verdirelim. For i = 5 To 15 Cells(i, 1) = i Next i While - Wend ve Do While-Loop Dngs Bir dngnn ka defa alaca daha nceden bilinmiyorsa While dngleri kullanlr. Bir art gerekletii srece almas gereken program bloklarnda kullanlr. While art Komutlar Wend Do While art Komutlar Loop Yukardaki her iki dngnn mant ayndr. art gerekletii srece dngde kalnr. Do Until Loop Dngs Bu dng yapsda art gerekleene kadar almas gereken program bloklarnda kullanlr. Dikkat ederseniz yukardaki dngler art gerekletii srece alyordu bu ise art gerekleene kadar alr. Yani art gereklemedii srece alr. Do Until art Komutlar Loop Do Loop While ve Do Loop Until Dngs Do Komutlar Loop Until art Do Komutlar Loop While art Bu dnglerin yukardakilerden tek fark dngye girerken deil karken art kontrol edilir. Yani dng ierisinde kod en az bir kez alr. rnein kullancya snav notunu sorduumuzu dnelim. Girecei not 0-100 aral dnda ise; notu bu aralkta girilinceye kadar tekrar tekrar sorulmas gerekir. Bu ie DoLoop Until yaps uygundur. nk dng ierisinde not sorulduktan sonra not 0-100 aral dnda ise tekrar sorulmas gerekir. Dim nott not deil nk not zel bir deyim Do Nott = InputBox (Not Girii, Snav Notunuz, 50) Loop Until (nott > 0) And (nott < 100)

28

DNG KONTROL FADELER Exit Do Exit Do komutu Do-Loop, Whlie Wend dnglerinden birinde baz artlarn gerkelemesi durumunda dngden kmak iin kullanlr. Exit For Bu komutta For Next dngs tamamlanmadan, baz artlar gerekletiinde dngden kmaya yarar. Exit Sub, Exit Function Exit Sub ve Exit Function deyimleri alt program sonuna ulamadan alt programdan kmaya yarar. Dim i, j j = Val(TextBox1) If j = Eit Eit Deil Kk Byk Kk veya Eit Byk veya Eit If x=5 Then MsgBox 5 Else 5 Deil If x5 Then MsgBox 5 Deil Else MsgBox 5 If x5 Then MsgBox 5 den byk Else MsgBox 5 den kk If x=5 Then MsgBox 5 den byk veya eit Else MsgBox 5 den kk

30

Bunlarn haricinde VB ve VBA deki Like operatr ile stringler zerinde daha detayl karlatrma ilemleri yaplabilmektedir. Like operatrnde tpk dosya isimlerinde olduu gibi joker karakterler vererek karlatrma yapmak mmkndr. Like operatrnde kullanlabilecek joker karakterler unlardr, ? # * [aralk] [!aralk] If adres Like *stanbul Then ifadesi ile adres deikeninin sonunda stanbul bulunup bulunmad If adres Like *stanbul* Then ifadesi ile adres deikeninin herhangi bir yerinde stanbul bulunup bulunmad If adres Like stanbul* Then ifadesi ile adres deikeninin banda stanbul bulunup bulunmad kontrol edilebilir. If x Like ?abc Then ifadesi ile x deikeninin ilk harfinin herhangi bir karakter ancak dier karakterin abc olup olmad If x Like #abc Then ifadesi ile x deikeninin ilk harfinin herhangi bir rakam ancak dier karakterin abc olup olmad If x Like [a-f]abc Then ifadesi ile x deikeninin ilk harfinin a ile f arasnda herhangi bir karakter ve dier karakterin abc olup olmad If x Like [!a-f]abc Then ifadesi ile de x deikeninin ilk harfinin a ile f arasnda olmayan herhangi bir karakter ve dier karakterin abc olup olmad kontrol edileblilr. lem ncelii Aritmetik ilemler sz konusu olduunda ilem ncelii sonucu etkileyen nceli bir etkendir. rnein, 5+7*2-3/9^3*5 ileminin sonucun ka olduu ilemdeki operatrlerin ncelii ile ilgilidir. Bu tip ilemlerde parantezler kullanmak her zaman ncelii belirleyici faktrdr. Ancak parantezlerin bulunmad durumlarda aadaki ilem nceliklerine gre ilemler yaplr. Aritmetik ^ Negatiflik iareti (-) *,/ \ Mod +,& Karlatrma = < > = Like Is Lojik Not And Or XOr Eqv Imp Herhangi bir karakter Herhangi bir rakam Bir veya daha fazla karakter Verilen aralkta bir karakter Verilen aralk dnda bir karakter

31

FONKSYONLAR ve ALT PROGRAMLAR Bir fonksiyon yada bir alt program belirli bir ii yapmak iin oluturulan kk program paralardr. (Fonksiyon ve altprogram, bu ikisini birden belitmek iin prosedr kelimesini kullanacaz). Fonksiyon ve alt program tanmlamann bir ok avantaj vardr. Bir ok yerde ayn kodlar kullanamanz gerektiinde bunlar her sefer yeniden yazmak yerine bu kodlar bir prosedrde tanmlayp, kullanacanz yerden bunu armanz yeterlidir. Prosedr Tanm Bir alt program tanm yle yaplr: Sub AltProgramAdi ([GirisParametreleri[As Tipi]]) Komutlar [Exit Sub] End Sub Bir fonksiyon tanm ise yle yaplr: Function FonksiyonAdi ([GirisParametreleri [As Tipi]]) [As Tipi] Komutlar [Exit Function] [FonksiyonAd=GeriDonusDegeri] End Function Fonksiyon alt programdan farkl olarak geriye bir deer gnderebilir. Bu deer gnderme ilemi fonksiyon ismine geri dnecek deerin atanmasyla olur. Bir fonksiyon veya alt program normalde End Sub veya End Function satryla biter. Ancak baz artlar gerekletiinde, fonksiyonun almasn bitirmeden kmak Exit Function (alt program ise Exit Sub) ile yaplabilir. Programda yeni bir fonksiyon veya alt program tanmlamak iin kod penceresinde bo bir yere gelerek aadaki kodlar yazmak yeterlidir. Geri kalan tamamlama kodlarn VBA kendisi yazacaktr zaten. Bu ekilde yazld takdirde VBA giri parametlerinin ve tip tanmlamalarn yazmayacaktr. Bunlar belirtmek istersek yukardaki anlattmz ekilde yazmak gerekecektir. Yerel fonksiyon, Function FonksiyonAdi Genel fonksiyon, Public Function FonksiyonAdi Yerel alt program, Sub AltProgramAdi Genel alt program, Public Sub AltProgramAdi

32

Prosedr ars Programn herhangi bir yerinden alt program armak AltProgramAdi [GirisDegerleri] Fonksiyonu armak ise Donendeger=FonksiyonAd([GirisDegerleri]) eklinde yaplr. rnek: Programlarn hemen hemen tmnde ihtiya duyulan gnn tarihini kendi formatmzla bir genel fonksiyonda tanmlayp daha sonrada bir TextBox a ift tklanp iine fonksiyonun geri dnen deerini yazdralm. lk nce fonksiyonun tanmn yapalm. Public Function tarih () tarih = Format (Date, dd.mm.yyyy) End Function Burada ilk nce genel bir fonksiyon alyor. Daha sonra geri dnen deer fonksiyon deikenine atanyor. Sonrada fonksiyon kapatlyor. Artk fonksiyonumuzu programmzn her yerinde rahatlkla arp kullanabiliriz. TextBox n DoubleClick olayna aadaki kodu yazalm. TextBox1 = tarih ok basit bir fonksiyon olmasna ramen, gnn tarihinin ok fazla kullanlaca yerlerde (rnein, sekreter programlarnda) programcy karmak kodlardan kurtaracaktr.

33

BLM -6-

BLG GR ve MESAJ PENCERELER

MSGBOX (Mesaj Kutular) Windows ta en aina olduumuz ey programn ak srasnda bilgi vermek ve onaylatmak iin karmza kan mesaj kutulardr. rnein bir programdan karken Kaydedilsin mi? gibi bir soru ve duruma gre Evet, Hayr, ptal vb. seenekleri olan bir kutu kar. Bu kutu Windows tarafndan salanan standart bir kutudur ve Windows altnda alan btn programlarda ayndr. Mesaj kutusu sadece kullancya mesaj vermek amacyla kullanlacaksa aadaki gibi kullanlr. MsgBox Programa ho geldiniz Bu durumda mesajla birlikte Tamam dmesi olan aadaki pencere kar.

Mesaj kutular bir ok durumda sadece bir mesaj vermek iin deil ayn zaman da kullancdan onay almak iinde kullanlr. Kullancnn mesaj kutularnda verebilecei cevaplar iin uygun dmeleri belirlemek ve verilen cevab da renebilmek iin MsgBox fonksiyonu aadaki formatta kullanlr. cevap = MsgBox ( mesaj, [tip], [pencerebasligi], [, helpfile, [context]) Komut formatnn parametleri unlardr. Mesaj Kutu ierisine yazlmasn istediiniz mesaj. Pencerebasligi Pencerenin balna yazlacak metin. Helpfile, Context Bu iki zellikle bir yardm dosyas ismi ve bir konu numaras belirlenebilir. Bylece kullancnn mesaj kutusunda yardm istediinde ilgili help dosyas alr ve ilgili konu gsterilir. Tip Pencerenin iine konacak seenekler, iconlar, pencerenin nceliini ve varsaylan seenekleri belirten bir saydr. Tip parametresini u ekilde formlize edersek, tip = secenek + icon + varsayilan + oncelik bu formldeki deerlerin alabilecei liste aadaki gibidir. Aadaki tabloda en nemli parametre mesaj kutusunun tipini belirleyen seenek parametresidir. Bu parametre mesaj kutusunda hangi dmelerin bulunacan belirler. Icon parametresi ise kullancnn dikkatini ekebilmek iin mesaja uygun bir resmin gsterilmesinde kullanlr.

34

Varsaylan dme parametresi ise kullancnn yanl seim yapmasn nlemek iin alan pencerede hangi dmenin aktif olacan belirler. rnein nemli bir dosyay silmek iin kullancdan onay alrken atnz pencerede varsaylan dmeyi Hayr dmesi yaparak kullancnn dosyay yanllkla silmesi nlenebilir. ncelik parametresi 4096 olmas durumunda mesaj kutusunda herhangi bir seim yaplmadan dier uygulamalara gei yaplamaz. Bu ayr drt seenek birbiriyle toplanarak MsgBox fonksiyonunun ikinci parametresi olarak kullanlr. Seenek 0 1 2 3 4 5 16 32 48 64 vbOKOnly vbOkCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel Icon vbCritical Hata iconu vbQuestion Soru iconu vbExclamation nlem iconu vbInformation Bilgi iconu Varsaylan 0 256 512 4096 0 vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 ncelik vbApplicationModal vbSystemModa System modal Normal Birinci dme kinci dme nc dme

MsgBox fonksiyonundan kullancnn hangi dmeyi setiini belirtir bir tamsay geri dner. Bu deerler aadaki tabloda verilmitir. Sembolik vbOk vbCancel vbAbort vbRetry vbIgnore vbYes vbNo Saysal 1 2 3 4 5 6 7 Anlam Tamam dmesi seildi ptal dmesi seildi lemi Durdur dmesi seildi Tekrar Dene dmesi seildi Gz ard et dmesi seildi Evet dmesi seildi Hayr dmesi seildi

35

rnek: Program kapatlrken kmak isteyip istemediini soracak bir mesaj kutusu oluturalm ve gerekli kodu yazalm. Form kapatlrken Terminate olay meydana geleceinden gerekli kodu bu olaya yazacaz. Dim cevap cevap = MsgBox (kmak stiyormusunuz, vbYesNo+vbQuestion, k) If cevap = vbYes Then MsgBox yi Gnler Else Cancel = True k iptal et End If

INPUTBOX (Bilgi Giri Kutusu) Kullancnn gereken deeri girmesi iin Visual Basic te InputBox fonksiyonu gelitirilmitir. Bu fonksiyon standart olarak Ok ve Cancel dmeleri bulunan bir pencere aar ve deer girii bu pencereden yaplr. InputBox (mesaj [,baslik][,varsayilan deger][,x][,y][,helpfile, context]) Mesaj Girilmesi gereken deer iin aklama veya soru. Balk Alacak pencerenin bal. Varsaylandeer Deer giri kutusunda bulunmas istenen deer. x, y Pencerenin, sol st kesinin x ve y koordinatlarn belirler. Fonksiyondan dnen deer kullancnn yazd metindir. Kullanc Cancel dmesini semise bo deer dner. InputBox fonksiyonundaki son iki parametre ile yardm dosyasnn ismi ve konu numaras verilirse pencereye ayrca yardm dmesi de eklenecektir.

rnek: InputBox araclyla girilen isimleri, ListBox a ekletelim. Dim giris giris = InputBox("sminizi Girermisiniz?", "Bilgi Girii", "sminiz", 0, 0) ListBox1.AddItem giris

36

BLM -7-

KOMUTLARDSK ve DOSYA YNETM KOMUTLARI

ChDrive ChDrive Src Harfi Aktif srcy deitirir. Src Harfi: Geilmek istenen srcnn ba harfini ieren string deerdir. Stringin ierii bir karakterden fazla ise ilk harf dikkate alnr. On Local Error Goto Hata ChDrive A A srcsne ge Exit Sub Hata: MsgBox Disket srcye eriilemedi: & Error Exit Sub ChDir ChDir Dizin Aktif dizini deitirmeye yarar. VB ve VBA daki komutlarn dosya isimlerinde yol kullanlmazsa, aktif src ve dizinde aranr. On Local Error Goto Hata ChDir C:\Windows Aktif dizini Windows dizini yap Exit Sub Hata: MsgBox Dizine eriilemedi: & Error Exit Sub MkDir MkDir DizinAd Dizin oluturmak iin bu komut kullanlr. DizinAd isimli dizini oluturur. On Local Error Goto Hata MkDir C:\Windows\yedek Windows dizini altna yedek dizini a Exit Sub Hata: MsgBox Dizin oluturulamad: & Error Exit Sub RmDir RmDir DizinAd smi verilen dizini siler. smi verilen dizinin alt dizinlerinin bulunmamas ve bo olmas gerekir. On Local Error Goto Hata RmDir C:\Windows\yedek Windows dizini altna yedek dizinini sil Exit Sub Hata: MsgBox Dizin silinemedi: & Error Exit Sub

37

Kill Kill DosyaAd smi verilen dosyay siler. On Local Error Goto Hata Kill C:\Windows\*.tmp Windows dizini altndaki tmp dosyalar sil Exit Sub Hata: MsgBox Dosyalar silinemedi: & Error Exit Sub Name Name Ad As YeniAd Verilen dosyann adn deitirir. Name Eski.doc As Yeni.Doc satr ile Eski.Doc dosyasnn ismi Yeni.Doc olarak deitirilmitir. CurDir CurDir[Srcharfi] Aktif dizini renmenize yarar. Srcharfi kullanlmazsa aktif srcdeki aktif dizini bildirir. Src harfi verilirse verilen srcdeki aktif dizini bildirir. CurDir C FileCopy FileCopy kaynakdosya, hedefdosya Bu komut DOS un Copy komutu kadar gelimi olmasada bir dosyay bir yerden, baka bir yere kopyalamanz salar. kaynakdosya: Kopyalanacak dosyann yeri ve dosyann ad. hedefdosya: Kopyalanacak dosyann yeni yeri ve ad. Dosya ad, src ismi ve yol ierebilir ancak joker karakter dediimiz *,? Gibi karakterleri ieremez. Bu da, bu komutu kullanarak bir seferde sadece bir dosya kopyalayabilirsiniz demektir. FileCopy \windows\win.com, \dos\win.com Dikkat ederseniz DOS un Copy komutundan farkl olarak, hedef olarak yolu ve dosya ismini vermeniz gerekir. FileLen FileLen (Dosyaadi) smi verilen dosyann boyutunu byte olarak bildirir. Bu dosya adna src ve yol ismi de verilebilir. FileLen (\Windows\win.com) FileDateTime FileDateTime (Dosyaadi) Dosyann tarih ve saatini verir. Geri dnen deer Tarih Saat formatndadr.

38

Dir Dir [(Dosyaadi[,AttrMaskesi])] Dosya, dizin listelemeye ve bulmaya yarayan kullanl bir komuttur. Dosyaadi : Dosyann veya dizinin ismi. Bu isim ierisinde * ve ? karakterleri de bulunabilir. AttrMaskesi : Bu parametre verilmezse sadece attributesi normal olan dosyalar dikkate alnr. Bu maskeye aadaki tablo deerleri verilerek gizli dosyalar, dizinlerin de dikkate alnmas salanabilir. Attribute 0 1 2 4 8 16 Anlam Normal Read Only Hidden System Volume Dizin

Bu deerler de OR ilemine tabi tutularak dosyalarn birka maskeye ayn anda tabi tutulmas salanabilir. TARH ve ZAMAN FONKSYONLARI Date Gnn tarihini renmeye ve deitirmeye yarar. MsgBox Bugn : & Date Bilgisayarn tarihini deitirmek iin direkt atama yaplabilir. Date = 19/06/2004 ki tarih arasndaki fark bulmak iin de CVDate (veya CDate) fonksiyonundan faydalanlabilir. Dim x x = Date CVDate(15/06/2004) MsgBox 15/06/2004 den bugne kadar olan gn says : & x Time Saati renmeye ve deitirmeye yarar. MsgBox Saat : & Time Bilgisayarn saatini deitirmek iin direkt atama yaplabilir. Time = 22:41:00 Now Bu gnn tarihini ve saatini birlikte verir. MsgBox Now MsgBox Date & Time Bu iki satrda ayn ii yaparlar. Date ve Time komutlaryla zaman ayar yaplrken Now komutu ile bu ayar yaplamaz.

39

UYGULAMALARLA LGL KOMUTLAR Shell Shell (Komutsatiri, [penceresekli]) Programdan baka bir program altrmak iin Shell komutu kullanlr. Komutsatiri : altrlacak programn ad. Penceresekli : Bu parametreye aadaki saylardan biri verilerek programn alt pencere ekli belirlenebilir. Bu parametre kullanlmazsa 2 kabul edilir. Pencere ekli 1,5,9 2 3 4,8 6,7 Anlam Normal ve kontrol alacak programda Simge durumunda ve Kontrol alacak programda Ekran kapla durumunda ve Kontrol alacak programda Normal ve Kontrol altran programda Simge durumunda ve Kontrol altran programda

AppActivate Programdan, o anda alan baak bir program aktif hale getirmek iin AppActivate komutu kullanlr. AppActivate pencerebasligi pencerebasligi : aktif hale getirilecek programn pencere bal. Aktif hale getirilecek programn o anda alyor olmas ve pencere balnn tam olarak verilmesi gerekir. Bu parametrede byk ve kk harf kullanm ayn deildir. Yani Program Yneticisi ve program yneticisi farkl iki balktr. Pencere bal yerine o penceresini task ID deeride verilebilir. Bu deer API ler vastasyla renilebilinecei gibi aktif hale getirilecek program Shell komutu ile arlmsa Shell komutundan geri dnen deer de kullanlabilir. Environ letim sisteminin evre deikenleri bu komut ile renilebilir. evre deikeni iletim sisteminde SET deyimi ile tanmlanabililen, bir ksm zel deikenlerdir. rnein, PATH, PROMPT gibi evre deikenleri iletim sistemi tarafndan direkt olarak tannan evre deikenleridir, BLASTER, CLIPPER gibi evre deikenleri ise zeldir ve baz programlar tarafndan tannr. Environ (no) no : stenen evre deikeninin numarasdr. Bu numara standart bir deikeni temsil etmez. Tanmlan srasna gre ilk deiken 1 kabul edilir. lk kullanm formatnda geri dnen deer o evre deikeninin tam metnidir. MsgBox Environ (1)

40

DoEvents Sradaki olaylarn yaplmasna imkan verir. Programnzda almas uzun sren kod bloklar varsa (dngler gibi) kod blounun almas bitene kadar formunuzun zerinde hibir ilem yapamazsnz. Bu tip uzun sren bloklarda belirli aralklarla kontrol Windows a vererek sradaki ilemlerin yaplmasn salamanz gerekir. Windows a kontrol vermek iin DoEvents fonksiyonu kullanlr. rnein ListBox a yirmibin tane eleman ekleninceye kadar formunuzun hibir hareketinize karlk vermediini greceksiniz. imdi de DoEvents komutunu ekleyerek altrn. Artk listeye hem eleman eklenecek hemde form zerinde alabileceksiniz. Ancak birinci ynteme gre ok daha yava olduunu greceksiniz. zellikle bu tip uzun sren ilemlerde mutlaka DoEvents kullanarak sradaki ilemlerin yaplmasn salamalsnz. Aksi takdirde kullanc programn kilitlendiini zannedip program yok edebilir.

STRING LEMLER StrComp Daha nceki kuak Basic lerde bu ilem direkt olarak = operatr ile yaplyordu. VB ve VBA da da bu karlatrma ilemi = operatr ile yaplabilirken dah gelimi olarak StrConp fonksiyonu ile de yaplabilir. StrComp (String1, String2, [art]) String1, String2 : Karlatrlacak iki string. art : Bu parametreye 0 verilirse byk-kk harf ayrm yaplr, 1 verilirse bu ayrm yaplmaz. Burada Windows tan kaynaklanan bir avantaj da vardr. Byk-kk harf karlatrmas sadece ngilizce alfabesinde bulunan karakterler iin geerli deildir, Windows Trke ise Trke byk-kk harf ayrm da yapabilir. Yalnz (i) harfinde problem vardr. Kk (i) harfi byk (I) harfine evrilir. Geri dnen deer 0 ise iki string eittir. Negatif ise String2 byk, pozitif ise String1 byktr. Bu byklk karakter says olarak deil alfabetik sradaki nceliidir. Trim Kullancdan bir metin girmesini istediinizde, kullanc metnin bana veya sonuna fazladan boluklar brakm olabilir. zellikle karlatrma ilemlerinde bu boluklar problem karr. Ayn durum rastgele eriimli dosyalarda da olur. Okunan bilginin sonunda fazladan bolukla bulunabilir. Bu boluklar atmak iin tane komut vardr. LTrim (Metin) Verilen metnin bandaki boluklar kaldrr. RTrim (Metin) Verilen metnin sonundaki boluklar kaldrr. Trim (Metin) Verilen metnin her iki tarafndaki boluklar kaldrr. UCase, LCase Metin ieren ifadeleri byk veya kk harfe evirmek iin iki tane komut bulunur. UCase (Metin) Girilen metindeki karakterleri byk harfe evirir. LCase (Metin) Girilen metindeki karakterleri kk harfe evirir.

41

StrConv, StrReverse StrConv (Metin, Mod) Metni verilen moda gre dntrr. Mod parametresinin alabilecei deerler ve yaplacak dnmler ise yledir. vbLowerCase : Metni kk harfe evirir. vbUpperCase : Metni byk harfe evirir. vbProperCase : Metindeki her kelimenin ilk harfini byk dierlerini kk yapar. StrReverse (Metin) Verilen stringi ters evirir. Dim s s = Excel s = StrReverse (s) MsgBox s lecxE Len Len (Metin) Metin iindeki karakter saysn verir. Bu sayya boluklarda dahildir. MsgBox Len(TextBox1) Right, Left, Mid Right (Metin, n) Metin iinde sadan n karakteri verir. Aadaki rnekte sadan harf alnmas istenmitir. MsgBox Right("Excel", 3) Sonu cel

Left (Metin, n) Metin iinde soldan n karakteri verir. Mid (Metin, Baslangic [,uzunluk]) Metin iinde Balang tan Uzun luk kadar karakter verir. Aadaki rnekte nc harften itibaren alt harf alnmas istenmitir. MsgBox Mid("Excel, Word, PowerPoint", 3, 6) InStr, InStrRev Bulunanyer = InStr ([KacinciHarften,] NeyinIcinde, Neyi, Nasil) InStr fonksiyonu bir stringin iinde bir baka stringi istediiniz konumdan itibaren bykkk harf ayrm yaparak veya yapmadan arayabilir ve bulursa bulduu yerin konumunu geri gnderir. Burada, KacinciHarften parametresi ile aramaya kanc karakterden balanacan belirtir. Bu parametre kullanlmazsa batan itibaren aranr. Nasl parametresinin 0 olmas durumunda byk-kk harf ayrm yapacan, 1 durumunda yapmayacan belirler. Geri dnen deer 0 ise aranan ifade bulunamamtr. Aksi takdirde geri dnen deer ifadenin bulunduu yeri bildiren saydr. InStrRev (NeyinIcinde, Neyi, [KacinciHarften],[Nasil]) InStr fonksiyonu gibidir ama arama ilemini batan deil sonran balayarak yapar. MsgBox InStrRev (nn niversitesi, i) Sonu 18 Sonu cel, W

Yukardaki satrda i harfi bulunmak istenmitir. Sondan ilk i harfi geri bildirilmitir.

42

Space Space (sayi) Verilen sayda boluk oluturur. MsgBox Excel e & Space(10) & ho geldiniz ASC, CHR Bilindii gibi bilgisayarda harfler, rakamlar, iaretler ve dier karakterler birer say ile temsil edilir. Her karakterin 0-255 aras bir kodu vardr. Bu koda Ascii kodu denir. VB ve VBA da hem bir karakterin ascii kodunu verecek, hemde ascii kodu bilinen karakteri retecek fonksiyonlar mevcuttur. Asc (Harf) Verilen harfin Ascii kodunu verir. Chr (AsciiKodu) Ascii kodu verilen saynn karakter karln retir. Str, Val Programlama dillerinde hem say hemde metin iin deikenler tanmlanabilmektedir. Ancak baz durumlarda metin olarak tanmlanm bir deiken iinde say olabilir. rnein metin kutusu metin trnde olmasna ramen iine say girilmesini isteyebilirsiniz. Metin trndeki bir deiken iindeki say zerinde ilem yapabilmek iinde onu Val fonksiyonu ile sayya evirmek gerekir. Str (sayi) Verilen says stringe evirir. a = Str(123) sonuta a = 123

Val (String) Verilen stringi sayya evirir. Bu ilemi yaparken evirme ilemi geersiz bir karaktere rastlanncaya kadar devam eder.

RASTGELE SAYI RETM FONKSYONLARI Rnd Fonksiyon 0 ile 1 arasnda say retir. MsgBox Rnd 0 ile 1 arasnda bir say retir MsgBox Rnd * 100 0 ile 100 arasnda bir say retir MsgBox Int(Rnd * 100) 0 ile 100 arasnda bir tamsay retir Fonksiyonun 0 ile bir say arasnda deil de iki say arasnda deer retmesini salamak iin zerinde deiik ilemler yaplabilir. MsgBox Rnd * 30 + 20 20 ile 50 arasnda bir say Genel olarak bir forml oluturacak olursak a ile b arasnda bir say retmek iin Rnd * (b-a) + a

43

YUVARLATMA FONKSYONLARI Eer iki tam sayy blp sonucu yine tam say olarak gstermek isterseniz, yani virglden sonraki ksmn atlmasn isterseniz \ operatrn kullanabilirsiniz. Int (Say) Int fonksiyonu ise virglden sonraki sayy atarak kendinden dk en yakn tamsayya yuvarlatr. Eer say pozitifse saynn tam ksm alnm olur, negatifse kendinden bir nceki sayya yuvarlatlm olur. Fix (Say) Int fonksiyonu negatif saylarda saynn tam ksmn vermek yerine kendinden nceki sayy veriyordu. Fix fonksiyonu ise negatif ve pozitif saylarda ayn ekilde davranr ve saynn virglden sonraki ksmn atar. Round (sayi,basamaksayisi) Int ve Fix fonksiyonlar virglden sonraki btn basamaklar atyor ve yuvarlatma ilemeni (yani 5 den bykleri bir ste, kkleri bir alta) yapmyordu. Bu fonksiyonla saynn istediiniz kadar basaman yuvarlatabilirsiniz. basamaksayisi parametresine 0 verirseniz, virglden sonraki btn rakamlar yuvarlatlr. rnein, bu parametreye 2 verdiinizde virglden sonraki iki basamak listelenecektir. Msgbox Round (60.215, 0) MsgBox Round (60.215, 1) MsgBox Round (60.215, 2) MsgBox Round (60.715, 0) Sonu: 60 Sonu: 60.2 Sonu: 60.22 Sonu: 61

44

BLM -8-

DOSYALAMA LEMLER

Programdaki baz bilgilerin kalc olarak saklanmas ihtiyac her zaman vardr. Bir dosyadan kayt okuyabilmek veya kayt yapabilmek iin nce dosya alr zerinde ilem yapldktan sonra da kapatlr. Eer ak olan bir dosya tekrar almaya allrsa VBA hata verecektir. Dosyalar yaplan ie gre temelde iki trde alr: Rastgele eriimli ve Sral eriimli olarak. Rastgele eriimli modda istenen kayda numaras verilerek ulalabilmesine ramen sral eriimli modda btn kaytlar ilendikten sonra istenen kayda ulalabilir.

DOSYA AMAK ster sral eriimli olsun, ister rastgele eriimli olsun bir dosyay amak veya oluturmak iin Open komutu kullanlr. Open Dosya Ad [For AmaModu] [Access EriimModu] [lock] As [#]dosyano [Len = kayituzunlugu] Dosya Ad AmaModu : Alacak veya oluturulacak dosyann ad. : Dosyann ama modunu belirler. Dosya u 5 moddan birinde alabilir.

Random, dosyadaki her kayituzunlugu ile belirlenen uzunluktaki alanlara yazlr. Dosyaya yazlan kayitlar kayituzunlugu ile belirlenen saydan kk de olsa kayituzunlugu kadar yer kaplar. Bylece dosyadaki her kaydn uzunluu ayn olacandan dosyada istenen kayda numaras verilerek eriilebilir. Her kaydn uzunluu 6 karakter ve dosyaya yazlan kaytlar unlar olsun. ali, veli, excel. Bu kaytlar dosyaya yazmak iin u program yazalm. Dim x as String * 6, dosyaadi dosyaadi = \d.dd Open dosyaadi For Random As #1 Len = 6 x = ali Put #1, 1, x 1 nolu kayda yaz x = veli Put #1, 2, x 2 nolu kayda yaz x = excel Put #1, 3, x 3 nolu kayda yaz Close #1 Program altrdktan sonra DOS ta Type d.dd komutu ile dosyann ieriine bakarsak bu kaytlar dosyada u ekilde olacaktr. a l i v e l i e x c e l

Grld gibi dosyadaki her kaydn uzunluu sabit olduundan dosyadaki her hangi bir kayda o kaydn numarasn vererek erimek mmkndr. - Binary, dosya binary modda alrsa dosya ierisindeki her karaktere, karakterin numaras verilerek ulalabilir. Dikkaet edilise Random modda dosya ierisindeki kaytlara bir btn olarak ulaabiliyorduk, bu modda ise kayt iindeki istenen karakterede ulalabilmektedir. - Input, dosya okunmak iin alr. Input, Output ve Append modda alan dosyalara sral eriimli dosyalar denir. Ve bu tip dosyalarda her kayt eit uzunlukta olmak zorunda deildir. Kaytlardan biri ok bykken dieri ok kk olabilir. Dolays ile dosyadaki

45

hangi kaydn nerede olduu o kaydn numaras verilerek bulunamaz. Bu tip dosyalarda bir kayda ulaabilmek iin o kayttan nceki btn kaytlar okumak gerekir. - Output, dosya yazmak iin sral eriimli olarak alr. - Append, Output modu gibidir ancak dosya gstericisi dosyann sonunda duracaktr ve yazlan kaytlar dosya sonuna eklenecektir. Amak istenen dosya mevcut deilse Append, Binary, Output veya Random modlarnda oluturulur. Yani bir dosyay Input modunda aabilmek iin o dosyann var olmas gerekir. Aksi takdirde hata oluacaktr. Dosyay Input modunda amadan nce Dir(dosyaadi) komutuyla dosyann varln kontrol etmek gerekir. Yoksa dosyay oluturmak gerekebilir. erisimmodu : Dosya alrken dosyann ne iin ald belirtilebilir. Bu parametre u kelimeden biriyl kullanlr. - Read: Dosya sadece okumak iin alr. Dosyadaki kaytlarn deitirilmesine ve yeni kaytlar eklenmesine izin verilmez. - Write: Dosya sadece yazmak iin alr. - ReadWrite: Dosya hem okumak hemde yazmak iin alr. Dosya Read ile yalnz okunmak iin almsa, dosyaya yazan komutlarda (Put gibi) veya Write ile yalnz yazmak iin almsa dosyadan okuyan komutlarda (Get gibi) VBA Path/File Access Error hatas verir. Lock : Dosya alrken istenirse dier programlarn bu dosyaya eriimi engellenebilir. u drt kelime ile birlikte kullanlr. - Shared, alan dosyaya dier uygulamalar tarafndan okuma ve yazma yaplabilir. - Read, okumaya kar kilitler. Dosya ak olduu srece dier programlar bu dosyadan okuma yapamazlar. Ancak dosyaya yazabilirler. - Write, dosyay yazmaya kar kilitler. Close komutu verilinceye kadar dier programlar bu dosyaya yazamazlar. - Read Write, dosyay hem yazmaya he de okumaya kar kilitler. dosyano : Dosya alrken o dosyaya 1 ile 255 arasnda bir numara verilir ve dosyada yaplan ilemlerde bu numara kullanlr. (Get #1 gibi). Ayn anda birka dosya alyorsa numaralarda farkl olmaldr. Dosya Binary, Input ve Random modlarndan biri ile almsa ayn dosya kapatlmaya gerek kalmadan farkl bir dosya numaras verilerek tekrar alabilir. Ancak Append ve Output modlarnda ayn dosyay kapatmadan tekrar amak mmkn deildir. kayituzunlugu : Dosyann am moduna gre bu parametrenin iki farkl anlam vardr ve 32767 den byk olamaz. Ayrca Binary modda alan dosyalarda bu parametrenin anlam yoktur. Dosya Random modu ile almsa bu say her kaydn uzunluunu belirler. Dosyaya yazlan kayt bu deerden bykse hata oluur. Bu deer verilmezse her kaydn uzunluu 128 karakter olarak kabul edilir. Dosya Random modundan farkl bir modla almsa bu say karakter buffer inin boyutunu belirler. Verilmezse 512 karakter olarak kabul edilir. Buffer bir seferde okunacak ve yazlacak karakter saysn belirler. Yani dosyadan bir kayt okunaca zaman buffer boyutu kadar okuma yaplr ve bir sonraki okuma isteinde okunmak istenen kayt bufferde ise tekrar dosyadan okunmaz. Yazarken de buffer doluncaya kadar dosyaya yazlmaz. Buffern byk deerleri okuma ve yazma ilemlerinin hzlanmasna sebep olur fakat bellekte fazla yer kaplar. Ancak SMARTDRV gibi bir Cache program kullanyorsanz veya kullandnz iletim sistemi Cache destei veriyorsa bu buffer byk vermenizin hibir avantaj olmaz nk Cache program zaten yapacaktr.

46

RASTGELE ERML DOSYAYA YAZMA ve OKUMA Random veya Binary modu ile alan dosyalara kaytlar Put komutu ile yazlr ve Get komutu ile okunur. Put [#] dosyano, [kayitno], degisken Get [#] dosyano, [kayitno], degisken degisken : erii yazlacak deikeni kaydn alnaca deiken. dosyano : Yazlacak veya okunacak dosyann numaras. Bu numara Open komutu ile belirlenen dosya numarasdr. kayitno : Yazlacak veya okunacak deikenin dosya iindeki kayt numaras. Bu numara dosyadaki ilk kayt iin 1 ve olabilecek en byk deer 2,147,483,647 dir. Dim x x = Merhaba Put #1, 5, x Yukardaki satrlarla 1 numaral dosyann 5 numaral kaydna x deeri yazlmaktadr. Eer kayt numarasn belitmeseydik x deikeni sradaki kayda yazlacakt. Rastgele eriimdi modda btn kaytlar dolu olmak zorunda deildir. Yani Dim x Get #1, 5, x MsgBox x Yukardaki satrlarda ise 1 numaral dosyann 5 numaral kayd okunmaktadr.

SIRALI ERML DOSYAYA YAZMA ve OKUMA Output ve Append modu ile alan dosyalara Write veya Print komutu ile yazma yaplr. Write # dosyano [,degiskenler] dosyano : Yazlacak dosyann numaras. Bu numara Open komutu ile belirlenen dosya numarasdr. degiskenler : Dosyaya yazlacak olan