Professional Documents
Culture Documents
Makro Trleri
Makrolar, oluturma yntemine gre iki grupta toplayabiliriz. Kayt (Record) Yntemi ile makro oluturma. Visual Basic Editr ile makro oluturma. Makro kaydetmek kasete mzik kaydetmeye benzer. Bir kez kaydedilen mzik nasl tekrar tekrar alnabiliyorsa bir kez kaydedilen makro da tekrar tekrar altrlabilir. Makro kaydetmeye yada yazmaya balamadan nce makronun yapaca ie gre kullanlacak komutlar ve admlar planlanmaldr. nk zellikle kayt makrosu oluturulurken bir hata yaplrsa hatay dzeltme admlar da kaydedilecektir. Her yeni bir makro kaydediinizde; makro, alma kitabna eklenen bir modl sayfasna saklanr. Visual Basic editr ile de makro dzenlenebilir. Visual Basic Editr ile makrolar, bir modlden dierine ya da alma kitaplar arasnda makro kopyalayabilir ve makro ya da modln adn deitirebilirsiniz .
MAKRO GELTRME
Bu blmde bir kayt makrosunun nasl yaratlaca, altrlaca ve yeniden dzenlemelerin yaplmas ilemleri anlatlmaktadr. Kayt makrolar daha nce de belirtildii gibi rutin ileri otomatik hale getiren ilem tanmlamalarndr. Veri zerinde yaplacak ilemler bir kez yaplrken makro olarak kayt edilir (record). Ardndan bu makro yeni veriler zerinde kullanlr.
-2-
ekildeki gibi makronun oluum tarihi ve hangi makinada oluturulduu gibi bilgiler verilir.. Not: Makro adnn ilk karakteri harf olmaldr. Dier karakterler harf, rakam yada alt izgi karakteri olabilir. Makro adnda bolua izin verilmez ;boluk yerine alt izgi iareti kullanlabilir. 3. Kayt Makro kutusundan makroyu kaydetmek istediiniz yeri sein. Eer makronuzun Excelin her yerinde geerli olmasn istiyorsanz ; makronuzu XLStart klasrndeki, Personal Makro Workbook a kaydedin. Saklama yerleri: This Workbook: Bulunulan alma kitabna. New Workbook: Yeni bir alma kitabna Personal Makro Workbook: Sadece makrolarn bulunduu zel bir alma kitabna. Makronuzun bir aklama iermesi iin Description kutusuna aklamanz yazabilirsiniz. (Bu aklama makronun yapt i olabilir). 4. TAMAM dmesine tklayarak makro kayr ilemine balanr. 5. Makroya kaydetmek istediiniz ilemleri yapn.
6. Kayd bitirmek iin Stop Recording dmesine tklayn.. 7.Yada sayfa stndeki mavi butona(durdurma butonuna basnz.)
Not: Makro kayt ederken genellikle temiz (hatasz) bir kullanm gerekir. Eer kayt srasnda hata yaplrsa bu hatalar makronun altrlmasnda da karmza gelir. Bunun dnda kayr ederken durum ubuunda Recording aklamas yer alr.
-3-
Kaydedilen makrolar altrmak, yendien dzenleme ve silmek iin makro iletiim kutusu kullanlr.
pucu: almakta olan bir makroyu durdurmak iin ESC ye basnz. A. Makroyu Microsoft Excel Ara Mensnden altrmak 1. Aralar mensnden, Makro mens oradan da istenine makro seilir. 2. Makro Ad kutusunan, altrmak istediiniz makronun adn yazn.Yada altndaki listeden altrmak istediiniz makroyu sein. 3. altr dmesine tklayn.
-4-
MAKRO DZENLENME
Makro dzenlemek, Record Makro yntemi ile kaydedilmi makrolar zerinde deiiklik yapmak ya da Create Makro yntemi ile yeni makro gelitirmeyi kapsar Record yntemi ile gelitirilmi makrolar dzenlemek iin: 1. Aralar mensnden Makro, oradan da Makros seeneine tklayn .
-5Bu gelen ekran VBA dilinde kod yazmak yada nceden yazlm makrolar tekrar dzenlemek amacyla kullanlan bir kod gelitirme ekrandr. Makro kaydederken yapm olduunuz ilemlerin VBA dilindeki karlklar Sub Makro ad ve End Sub deyimleri arasnda greceksiniz. Bu blmde imdilik yapabileceimiz en basit ilem nceden kaydettiimiz. bir makronun ieriini deitirmek ve dzenlemektir. Not :Excel ve Makro modul sayfas arasnda gei iin klavyeden Alt-Tab ksayolunu kullanabilirsiniz . Sub . adyla kaydettiimiz makronun kodlar aadaki ekilde grnecektir. Sub Dme1_Tklat() i = ActiveCell ActiveCell = (i + 1) End Sub Balang olarak bu kodlar satr satr aklayp ne ie yaradklarn anlamaya alalm. Sub Dme1_Tklat() Bu satr makromuzun adnn ne olduunu gsteriyor. Sub deyimi bunun bir altprogram olduunu gsteriyor. Tek trnak () iareti ile balayan satrlar programn almasn etkilemez ancak program iersine yazlacak aklama satralar trnak iareti balamas gerekir. (Rem anlamndadr)
-6-
Ardndan Visual Basic editr iinde: Sub makroad() End Sub Alanlar grnecektir. Sub makroad() -bu ksmda kodlarnz yaznEnd Sub Not : Create yntemi ile oluturulan makrolar da aynen Record yntemi ile kaydedilen makrolar gibi altrlrlar.
-7VBA, gl ve kolay kullanlan bir makro dili olarak gelitirilmitir. Uzman ve yeni balayan kullanclar (kendi ileri ile ilgili) gereksinimlerini VBA ile kolayca zebilecektir. VBA sayesinde dier uygulamalarla da iletiim salanr. Birbirine balanabilen bu uygulamalar; Microsoft Excel, Microsoft Power Point, Microsoft Project ve Visual Basic ile yazlm uygulamalar.
Eer daha nce Excel ya da Word ortamnda makro yazdysanz, Visual Basic Dzenleyicisi ilk bata daha nce grmediiniz pencereler ve dmelerle kark gelecektir. Not: Visual Basic Dzenleyici iindeki zel bir pencere hakknda bilgi almak iin, o pencereyi atktan sonra F1 tuuna basn.
1. zellikler Penceresi
Bir zellik, bir nesnenin rengi ya da bal gibi bir karakteristiidir. Bir nesnenin boyu, rengi, yaz tipi bilgiler bu pencere araclyla dzenlenir.
2. Proje Gezgini
Bir alma kitab, belge, ablon ya da sunumla ilikilendirilmi kodlarn hepsi alma kitab, belge, ablon ya da sunumla beraber otomatik olarak kaydedilen bir proje iinde saklanr. Visual basic dzenleyicinin iindeki, proje gezgini ile ak bulunan her alma kitab, belge, ablon ya da sunumun iindeki projeleri grebilir, deitirebilir ve aralarnda gei yapabilirsiniz. Proje gezgini penceresini isterseniz deiik yerlere yerletirebilir ya da boyutlarn deitirebilirsiniz. Proje gezgininde ak bulunan her alma kitab, belge, ablon ya da sunum iin bir proje vardr. Her proje iinde ise, olaylar temsil eden nesneleri bulacaksnz. Bu nesneler; Belgeler, alma kitaplar ve alma sayfalardr. Formlar: (Kullanc formlar olarak da adlandrlr) Kullanclarn veri girii ya da bilgi al verii iin kullanlan iletiim kutulardr. Standart Modller: zel bir nesne ya da bir formla ilikisi olmayan kodlan tarlar. Snf Modller: zel bir nesne tipinin kodunu tarlar.
-8Referanslar: Dier projelere olan referanslar tarlar. Bir modl ya da form iindeki kodu grebilmek iin, nesneye tkladktan sonra, Proje gezgini penceresinin stndeki, Kod Grntle dmesine basn. Kod Grntle dmesi Bir nesne ya da formun kendisini grebilmek iin ise, nesneye tkadktan sonra, Proje gezgini penceresinin stndeki, Nesne Grntle dmesine basn. Nesne Grntle dmesi
3. Kod Penceresi
Bir proje iindeki kodlar grebilmek iin, kodu tayan elemana tkladktan sonra, Proje Gezgini penceresinin st tarafnda bulunan Kodu Grntle dmesine basmanz gerekir. pucu: Kod penceresinde ayn anda birden fazla yordam grebilmek iin, Aralar, Seenekler mensndeki, Dzenleyici sekmesinden, Tam Modl Grnmn Varsay kontrol kutusunu sein. Her seferinde bir yordam grebilmek iin ise bu kontrol kutusunu temizleyin. Kod pencerenin st tarafnda bulunan Nesne (Object) ve Yordam (Procedure) listelerini kullanarak kodlar arasnda gei yapabilirsiniz. Nesne kutusundan, (Genel) zerine gelin ve Yordam kutusundan, zel bir olaya atanmam bir Yordam adna tklayn. Nesne kutusunda, bir nesneye tklayn, ardndan Yordam kutusundan, herhangi bir olay zerine basarak, o olaya atanm bulunan kodlar grn.
-9Argmanlar ise tanmlanan bir deiken gibidir. arlan yordamdan geen deerler olarak tanmlanr. Visual Basicte yordamlar (procedure) ikiye ayrlrlar: Genel yordamlar Olay yordamlar
1. Genel Yordamlar
Bir genel procedure belli bir ilemi stlenen program parasdr. rnein bir dosyann almas ya da raporun bastrlmas iin kullanlabilir. Genel yordamlar dier yordamlardan arlrlar. Bylece belli bir ilevi olan bu birim programn her yerinden istenildii kadar arlarak kullanlr. Buna karn olay yordamlar ise kullancnn yaratt bir olay nedeniyle alr. Olay yordamlar kullanclarn hareketlerine tepki olarak arlrlar. rnein bir dmeye tklayarak bir ilemin balatlmas. yi bir programlama stratejisi iinde bir takm ortak grevler genel yordamlar olarak planlanmaldr. Bylece kod tekrarna gerek kalmaz. Yaps: Sub yordam ad(arguments ) -deyimlerEnd Sub
2. Olay Yordamlar
Olay yordamlar bir olayn (event) olumasna tepki olarak alrlar. Visual Basic nesneleri (formlar, metin kutular, dmeler, vb) belli olaylar tanrlar. Bylece olay olutuunda; o olay iin hazrlanm olay yordam alr. Bir komut dmesinin olaylar: Click: Tklama GotFocus: Odaklanma,zerine gelme. KeyDown: Bir tua basmak. MouseDown: Farenin bir tuuna basmak. Olay yordamlar, bir nesnenin alt tire ile olaylara bal olarak gelitirilir. Bu adlar Visual Basic kod editr tarafndan otomatik olarak ya da manuel olarak oluturulur. Yaps: Nesne_Olay rnek: Command1_Click
- 10 Olay yordamlar Visual Basic nesnelerinin olaylarna bal olarak gelitirilirler: rnein Form1_load olay yordam bir formun almas srasnda alacak bir yordam, Command1_Click olay yordam da bir komut dmesine tklandnda alacak bir kod birimini gsterir. Yaps: Sub kontrol ad_olay ad(argmanlar ) -deyimlerEnd Sub Olay yordamlarnn adn kod editr iinde dorudan yazabileceiniz gibi Visual Basic tarafndan otomatik olarak koda eklenen yordam ve olay adlarn da kolayca kullanabilirsiniz. Bu ilem iin kod editr penceresinde nesne ve olay seilir. 1. Kod editr penceresinde Object kutusundan istediiniz nesneyi sein. 2. Procedure kutusundan isteiniz procedure sein. 3. Sub procedurenz hazr. Not: Burada procedurelarn adlaryla ilgili olarak nemli bir konuyu aklamak istiyorum. Bir komut dmesine bir olay yordam ekledikten sonra; rnein Command1_Click, zellikler tablosundan Name zellii ile kontroln ad deitirilirse Visual Basic bunu takip edemez ve eski procedure genel bir procedure olarak modl genel dzeyine atar. Bu durumda procedure yazlmadan nce adlandrma ileminin yaplmas gerekir.
3. Fonksiyonlar
Visual Basic procedure'lar sadece Sub olarak dzenlenmez. Bir dier procedure yaps da Function olarak bilinen fonksiyonlardr. Bir procedure olarak dzenlenen fonskiyonlar belli bir ilemi kod olarak ieren ve bir deeri geri dndren program paralardr. Bir yordam olarak yaratlan fonksiyonlarn Sqr, Val gibi Visual Basicte hazr olarak bulunan fonksiyonlarla ilikisi yoktur. Fonksiyonlar kullanm bakmndan bir ilemi yapan ve istenildii yerde kullanlabilen bir kod birimidir. rnein bir faiz fonksiyonu istenildii program iinde istenilen yerde arlarak kullanlr. Bir fonksiyon yordamnn yaps: [Private|Public][Static] Function yordam ad (argmanlar) [As tip] -deyimlerEnd Function Fonksiyonlar ayr bir yordam olarak dzenlenirler. Fonskiyonlarn kullanmnda argmanlar nemlidir. Fonksiyonlar argmanlar alrlar, bir dizi ilem yaparlar ve sonucu dndrrler. Sub yordamlar ile Function yordamlar arasnda farklar unlardr: Bir fonksiyon deer dndrr ve genellikle bir eitliin sanda kullanlr.
- 11 Bir sub ise belli bir ii yapar. lemi tamamlar bir deer ya da parametre ile kullanm zorunluluu yoktur.
Function UcretHes(deger1, deger2, deger3) -deyimlerEnd Function Yaps: Ucret = UcretHes(gun, baz, katsay) Fonsiyon yordamlar bir deeri elde etmemizi salarlar. Fonksiyonlar deiken gibi veri tipine sahiptirler. Bu veri tipi dnecek verinin tipini belirler. Fonksiyonlar bir hesaplamann paras da olabilirler. Toplam = Ikramiye + UcretHes(gun, baz, katsay) / 360 rnein ap verilen bir dairenin alann hesaplayan bir fonskiyon ya da verilen dereceyi fahrenheite eviren bir fonksiyon gibi.
Fonksiyonun kullanm:
Private Sub Command1_Click() Dim Deer As Integer Deer = InputBox(" ") MsgBox Fahrenheit(Deer) End Sub
C. Nesneler
Nesne (obkect) alma tablosu (worksheet), sayfa (sheet), sayfa zerinde zerinde bulunan bir aralk, izim, grafik, bir dme nesne olarak adlandrlr. ekil: Microsoft Excel Nesneleri
- 12 -
Excel VBA'de ilevsel olan makrolar nesneler sayesinde yazlr. Nesneler (objects), Excel'de kontrol edilecek eyleri temsil eder. Bunlar Workbook (alma Tablosu), Rows (Satrlar), Cells (Hcreler), Charts (Grafik) vb bir ey olabilir. Nesnelerle ilem yapmak iin iki nemli aracn bilinmesi gerekir. Bunlar: Methods (Metotlar) ve Properties (zellikler) dir. Metotlar nesnelerle yaplacak ilemleri tanmlar. rnein bir alann silinmesi uygun nesne (alan) ve uygun metot (silme ilemi) ile yaplr. zellikler ise nesnenin zelliklerini gsterir. rnein hcrenin renkli ya da italik olarak yazlmas gibi.
Aklama Excel uygulamasnn geneli Excel alma Kitabnn tamam Bir alma Kitabndaki bir alma Tablosu Bir ya da daha ok hcre Bir alma Tablosundaki bir Grafik
Nesne tanmlanmasnda nesnenin kendini kapsayan ve kendi iindeki nesne ile birlikte yaplmasndan tam nesne tanmlamas ortaya kar: Application.Workbooks("butce").Worksheet("ocak").Range("a1")
1. zellikler
Bir nesnenin zellii onun rengi, uzunluu gibi niteliklerini dzenlemek iin kullanlr: Range("A1").Font.Bold = True
- 13 Cells(5,1).Font.Size = 34
3. Metotlar
Metotlar ise nesne-temelli programlamann ilemlerini (komutlarn) olutururlar. Her nesne olas ilemlerini metotlaryla tanmlar. Metotlarn kullanmnda nesne, ardndan nokta ile metot kullanlr. Nesne.Metot ActiveCell.Clear ActiveWorkbook.Close
- 14 Copy Delete Open Close Activate rnek: Range("A1:B5").Select Range("A1").Activate Range("A1:B5").Delete Range("B5").Value = "Ne haber?" salar Alann panoya (clipboard) kopyalanmasn salar. Belirtilen nesneyi siler alma Kitabn aar Belirtilen nesneyi kapatr Belirtilen nesneyi aktifletirir
D. Gsterim
Excel zerinde ilem yaparken genellikle hcrelerdeki veriler kullanlr. Hcrelerle (cells) ilem yapmak iin hcreler iindeki deerleri gstermek gerekir. Bu ilem iin Range ve Cells metotlar kullanlr. Range (A1) Cells(1,1) Deerleri: Range (A1).Value Cells(1,1).Value
Sub AralkFormatla() Workbooks("Book1").Sheets("Sheet1").Range("A1:D5").Font.Bold = True End Sub Aadaki tablo Range metodu kullanarak Baz A1 gsterimi adreslemeler yaplmtr:
Gsterim Range("A1")
Range("A1:B5") Range("C5:D9,G9:H16") Range("A:A") Range("1:1") Range("A:C") Range("1:5") Range("1:1,3:3,8:8") Range("A:A,C:C,F:F")
Anlam A1 hcresi
A1 den B5 e kadar oklu aralk seimi A kolonu Birinci satr A dan C kolonuna kadar Birinci satrdan beinci satra kadar Birinci, nc, sekizinci satr A, C, ve F kolonlar
- 15 -
Soru1 Excel sayfas zerindeki butona tklandnda saysal olarak deer arttrma yada azaltma ilemi yapan fonksiyon oluturulmas Cevap:ncelikle ilemler excel de buton yardm ile yaplaca iin excel sayfas zerine once bir buton oluturulur.
Buton oluturulduktan sonra yeni butonuna baslr ise yeni Dme3 kod sayfas otomatik olarak karmza gelir
Soruda kullanlan activecell komutu hcrenin zerinde bulunduumuz alan vermek iin
- 16 kullanlr. ********************************************************************************
Soruda kullanlan Activewindow komutu alma sayfalarn belirtmek iin kullanlr.Ayn komutun devamnda Displaygridlines komutu ise grntnn durumunu belirtmek iin kullanlr ******************************************************************************* Soru3 Excel alma sayfalarn,sekmelerini (sayfa altndaki) isimleri yok edip geri getirmek . Aada verilen ktda Activewindow komutu ile allan aktif sayfa belirtilmitir. Bu komut ile birlikte displayworkbooktabs verilmitir. Bu komu ile sekmelerin durumu belirtilmitir. Hatrlatma:Bu tr buton komutlar otomatik olarak kullancnn modl oluturmasn salar. Yazlan kodlar formda yer almad iin modul oluturma gerekir. Moduller altmz programlarn iine girebilen yazlmlardr.
- 17 -
***********************************************************************
Soru4:altmz sayfay kaydedip kapatan makro kodu elde etmek Sub save_Dme1_Tklat() Rem alma sayfasn kaydetmek ActiveWorkbook.Save ActiveWorkbook.Close End Sub
*******************************************************************************************************
Soru5:altmz excel sayfasna kaytl dosya getirmek ve kaytl dosyalar farkl ad ile kaydetmek.(Bu ilem iin vba ortamnda form oluturulacaktr)
- 18 -
Form zerinde iki adet metin kutusu ve iki adet buton oluturulmutur.Kodlar aada verilmitir.
Dikkat edilirse altmz sayfay kaydedip kapatmak iin activeworkbook komutundan yardm alnmtr. Kaytl dosyay amak iin ise workbooks komutu kullanlmtr. Bunun nedeni dosya arlrken dosyann aktivlik bir durumu yoktur. Dosya uzants mutlaka belirtilmelidir.Deilse ayn isimde baka dosyalarda olabilir.
Soru6:altmz excel hcrelerini kilitlemek(korumaya almak), kilidi amak. Bu ilem iin excel sayfas zerinde iki adet buton yardm alnacaktr.
- 19 -
Cevap
ekilde grld gibi butonlar yardm ile yine module otomatik olarak oluturulmutur. Set komutu ile sayfa bilgisi hafzada tutulmutur. Hafzann devamll iin Dim komutundan yardm alnmtr. Kullanc isterse unprotect satrndaki 123 bilgisini silerse aadki gibi bir grnt ile karlaabilir.
Kullanc ifre bilgisini bu Alana girerse sayfa zerine bilgi giriinde bulunabilir. Soru7:altmz excel hcrelerinde A1 ile A10 arasna ardk olarak 1 ile 10 arasndaki rakamlar sras ile yerletiren. B1 ile B10 hcreleri arasna renk scalasn yerletiren excel vba kodlarn hazrlaynz
- 20 -
Cevap Sub Dme1_Tklat() For i = 10 To 1 Step -1 Cells(i, 1) = i Cells(i, 2).Interior.ColorIndex = i Next End Sub
Cells(satr,sutun) yardm ile hcrelere rakamlar a10 hcresinden balama art ile a1 hcresine kadar yazlmtr. nteriror (iermekte) komutu ile hazr renk skalasndan yardm alnmtr. ********************************************************************************************************** Soru8:altmz excel hcrelerinde A1 ile A4 arasna 1 verisini doldurmak A5 ile A7 hcresine mesaj yerletiren A6 ile A8 hcrelerine toplam mesajn vba ortamnda yazdran program hazrlaynz.
Cevap
Dikkat edilecek nokta verilerin eitlik sembol ile balamamasdr. Formllerin ise mutlaka eitlik sembol ile balamasdr. Ayrca toplam forml iin ngilizcedeki karl olan sum komutunun kullanlmasdr.
Soru9:altmz excel hcrelerinde aada verilen kt ilemine yapan kodlarn hazrlanmas.(a1 hcresi ile a10 hcreleri arasna 1 ile 10
- 21 arasndaki rakamlar ardk olarak yerletirilmitir. Baka bir buton ile de sayfa temizlii yaplmas istenmitir.)
Cevap
ktda verildii gibi set komutu ile active hcreler hafzaya atlmtr Range(satr,sutun) tanmlamas ilede alma sayfas temizlenmitir. ***************************************************************************
Soru10:altmz excel hcrelerinde aada verilen grntye gore A1 den H2 ye arasna 0 ile 9 arasnda rasgele say retilecektir
- 22 A2 den H2 ye kadar 7 den balayp H14 e kadar ardk artan bir veri girii yaplacaktr.A3 ile H3 arasndaki forml A1 ile A2 hcrelerinin arpm olarak verilecek makrolar oluturunuz.
Private Sub UserForm_Click() 'ikinci satr 7 den 15 e kadar ardk olarak atansn Range("A1:H3").Clear Range("a5:H5") = "yeniforml" Range("A1:H1").Formula = "=int(rand()*10)" k = 7 For i = 1 To 8 '2. satrn 1. sutunundan- 8. sutununa kadar deer 'k = 6 + i Bu ekilde de olabilir ActiveSheet.Cells(2, i) = k k = k + 1 Next Range("a3:h3").Formula = "=a1*a2" End Sub
- 23 Soru12:Excel hcrelerinde alan snrlama (mayn tarlas oyunu) Current range komutu kullanm. Current ragion komutu ile satr sutun deerleri belirlenerek.Kursorun durduu yer alann iinde olup olmad hesaplanabiliyor.Unutulmamldr ki mutlaka current range komutu activecell komutunun devam ettiricisidir.
Sub currentrange_Dme1_Tklat() 'Dim alansec As Range Set alansec = ActiveCell.CurrentRegion alansec.Select:End Sub Soru13:altmz excel hcrelerinde blge seimi ve renklendirilmesi.
Sub bolge_Dme1_Tklat() Dim bolge As Range Set bolge = Range("a1:b9") Rem renklendirme 'deiik seme metodu 'bolge.Interior.ColorIndex = 7 'yada bolge.Interior.Color = vbMagenta 'bos alanlar isaretler bolge.SpecialCells(xlCellTypeBlanks).Select
ile Alannn belirlenmesi gerekir. Set bolge = Range("a1:b9"),renklendirebilmek iin iki metod kullanlabilir 'bolge.Interior.ColorIndex = 7 'yada bolge.Interior.Color = vbMagenta mutlaka blgenin balangta verilmesi gerekir. ************************************************************************
- 24 Set bos = Range("a1:c9") Rem saym iin gerekli Rem bos.Select Rem seilen yeni alan renklendirir bos.Interior.Color = vbRed rem saym iin gerekli istenilen alana kmas iin rem bos alan secimi bos.SpecialCells(xlCellTypeBlanks).Select rem bos alanlar renklendirir bos.SpecialCells(xlCellTypeBlanks).Interior.Color = vbCyan rem dolu alanlar saymak iin kullanlr ActiveCell(11, 2) = bos.SpecialCells(xlCellTypeBlanks).Count Range("b12") = "dolu" Rem Range("c12") = "=27-c11" ActiveCell(12, 2) = "=27-c11" ActiveCell(11, 1) = "bos" End Sub
Soru15:altmz excel hcrelerinde belirli tarihten sonraki satrlar vb ortamndaki liste kutusuna yazdrmak.
- 25 -
Bu ilem iin mutlaka ofis vb ortamnda form oluturmak gerekir daha sonra kstasa gre kod yazmak gerekir. Bilgisayarmzn kod ile tarihini 9.7.2007 yapyoruz. On satrlk bilgide ikinci sutundaki tarih bilgilerini karlatryoruz 9.7.2007 tarihinden daha kk tarihleri birinci ve cnc sutundaki bilgileri ile beraber liste kutusuna aktaryoruz.Aadaki ekle benzer kt ile karlarz.
Soru16:15. soruya benzer baka bir rnekte belirli bir saati baz alarak ilemlerin durmasn salayabiliriz. Aadaki rnekde pc nin saati 21:56 dan byk ise dosya kaydedilecektir
Sub farkltarih_Dme1_Tklat() 'Sub auto_open() 'If Date >= CDate("10.10.2007") Then If Time >= ("21:56:47") Then ActiveWorkbook.Save MsgBox "Kullanm sresi devamediyor." Exit sub End If MsgBox "Kullanm sresi dolmutur." ActiveWorkbook.Close End Sub
- 26 Not:eer soruda Excel alr almaz ilemlerin otomatik yaplmas isteniyor ise Sub auto_open() komutu ,Sub farkl tarih_Dme1_Tklat() komutunun yerine yazlr. Excel dosyas aldnda butona basmaya gerek duyulmadan program otomatik olarak alr.
Sub Dme1_Tklat() Dim i As Integer For i = 1 To 10 Cells(i, i) = i Cells(i, 11 - i) = 11 - i Cells(i, i).Interior.ColorIndex = 7 Cells(i, 11 - i).Interior.ColorIndex = 6 Next End Sub Sub Dme2_Tklat() Range("a1", "k20").Clear End Sub
Sub snrrenk_Dme1_Tklat() 'Const limit As Integer = 50 limit = 50 For Each c In Range("c1:c10") ' For c = Range("c2") To Range("c10") If c < limit Then c.Interior.ColorIndex = 4 End If Next c End Sub
Soruda grld gibi 50den kk notlar yeil renk ile snrlandrlmtr. Dg her iki trlde yalabilir, For Each c In Range("c1:c10") Yada For c = Range("c2") To Range("c10") eklinde
Soru 20:Sayfa 1 deki 50 den byk ve e karekterinde byk bilgileri sayfa 2 ye aktarma
- 28 -
Sub Dme1_Tklat() For i = 1 To 100 For j = 1 To 100 If Cells(i, j) > 50 Then Worksheets("Sayfa2").Cells(i, j) = Cells(i, j):rem sayfa 2 iin kullanlmtr End If Next Next
For i = 1 To 100 For j = 1 To 100 If Cells(i, j) > "e" Then Worksheets("Sayfa2").Cells(i, j) = Cells(i, j) End If Next Next Worksheets("Sayfa2").Select End Sub
Soru 21:Excel sayfasndaki verileri kod kullanarak szmek Bu ilem iin kstasn ve verilerin arta uyup uymadnn kontrol edilmesi gereklidir. If Sayfa1.Cells(i, 1) = "" Then Exit Do Satr programn can damardr. 1.sutundaki verilerin bo olup olmadnn kontrol yaplmaktadr. If Sayfa1.Cells(i, 1) = Range("a20") Then 'gerek art satr ile arta uyan veri olup olmadnn kontrol yaplmaktadr.
- 29 k = 3 'Range("a1").AutoFilter 'veri sz uygula Do If Sayfa1.Cells(i, 1) = "" Then Exit Do If Sayfa1.Cells(i, 1) = Range("a20") Then 'gerek art k = k + 1 Sayfa1.Range("a" & i, "e" & i).Copy Sayfa1.Range("a2" & k, "e2" & k).PasteSpecial Sayfa3.Range("a3").PasteSpecial xlPasteAll End If i = i + 1 Loop End Sub
********************************************************************** Soru22:Aada verilen Excel sayfasndaki verilerin arta uygun olarak dzenlenmek istenmektedir. Kdem teminat ve maa hesaplanacaktr.Kdemler iin kiiler 8 yldan az alanlar 400 ytl cret alacaktr, dier personel ise alma blmne gre cret alacaktr.retimdeki personel 500, depo personeli 450,sat personeli 550 ytl cret alacaktr.
- 30 Cevap Sub Dme1_Tklat() Dim i As Integer i = 4 Do If Sayfa1.Cells(i, 1) = "" Then Exit Do If (Sayfa1.Cells(i, 4)) >= 8 And (Sayfa1.Cells(i, 3)) = "retim" Then Sayfa1.Cells(i, 6) = 500 ElseIf (Sayfa1.Cells(i, 4)) >= 8 And (Sayfa1.Cells(i, 3)) = "depo" Then Sayfa1.Cells(i, 6) = 450 ElseIf (Sayfa1.Cells(i, 3)) = "sat" Then Sayfa1.Cells(i, 6) = 550 Else Sayfa1.Cells(i, 6) = 400 End If Sayfa1.Cells(i, 7) = Sayfa1.Cells(i, 6) + Sayfa1.Cells(i, 5) i = i + 1 Loop End Sub
Soru23:Aadaki listeyi 50 ve st geti aas kald,kalanlar krmz renkle belirtip, toplam geen ve kalanlarn saysn hesaplayalm
Do If Sayfa1.Cells(i, 3) = "" Then Exit Do 'not1,not2,not3,ort deerlerini atayalm not1 = Sayfa1.Cells(i, 3) not2 = Sayfa1.Cells(i, 4) not3 = Sayfa1.Cells(i, 5) ort = not1 * 0.3 + not2 * 0.3 + not3 * 0.4 Sayfa1.Cells(i, 6) = Round(ort) If ort > 49 Then Sayfa1.Cells(i, 7) = "geti" g = g + 1 --------------- >>>>devam yan tarafta
Else Sayfa1.Cells(i, 7).Interior.Color = vbRed Sayfa1.Cells(i, 7) = "kald" k = k + 1 End If i = i + 1 Loop Sayfa1.Cells(21, 3) = g Sayfa1.Cells(21, 4).Interior.Color = vbBlue Sayfa1.Cells(21, 4) = k End Sub
- 31 -