You are on page 1of 31

-1-

Konu:EXCEL ZERNDE MAKRO UYGULAMALARI


Makro: Sk yaplan ileri tekrarlayan yaplardr. Excelde belirli bir ii tekrarl olarak (yinelemeli) yapyorsanz, bu ii makro ile otomatik hale getirebilirsiniz. rnein her ay sonu yaptnz ilemler. Makro, belli bir ii yapmak zere her istediinizde altrabileceiniz bir Visual Basic modul iersine depolanm komutlar ve fonksiyonlar dizisidir.

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.

A. Makro Gelitirmede Kullanlacak Admlar


Bu yntemi kullanmadan nce yapacamz iin admlarn ok iyi belirlemeliyiz hatta gerekiyorsa bir kenara adm adm not aln. Makro kaydetme: 1. Aralar mensnden Makro komutunu ve Yeni makro kaydet komutunu sein . 2. Makro Ad kutusuna makro iin bir ad yazn . rnein Deneme.

-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-

B. Makro Iletiim Kutusu

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.

B. Makroyu bir dme,izim nesnesi yada grafik yardm ile altrmak.


alma kitabnzdaki bir butona ,izim nesnesine yada grafie bir makro atayabilirsiniz .Buton, izim nesnesi yada grafie tkladnzda bunlara atanm olan makrolar otomatik olarak alrlar

-4-

C. Bir nesneye bir makro atama admlar


1. Makronun atanaca nesneye tek tklayarak nesneyi sein. 2. Seili nesnenin zerinde iken sa tklayp alan ksayol mensnden Makro ata ya tklayn. Varolan bir makroyu atamak iin Makro Ad kutusuna nesneye atanacak makronun adn yazn ve Tamam dmesine tklayn. Eer yeni kayt makrosu kaydedip nesneye onu atamak istiyorsanz Record dmesine tklayn

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 .

2. stediiniz makroyu sein ve Edit dmesine basn.

-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)

End sub ve programn bittii satr.

-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.

III. EXCEL VBA


Visual Basic for Application (VBA), Microsoft Visual Basic programlama dilinin nesne temelli bir uyarlamasdr. Nesneler Microsoft uygulamalar tarafndan salanr. Visual Basic for Application, Excel iinde yer alr. Excel gibi dier uygulamalar da VBA destekler. Visual Basic bilen kullanclar VBAe almalar ok kolay olacaktr. Excel bilen kullanclar ise hem hem VBAi renecek hem de Visual Basici renecektir.

-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.

A.Visual Basic Editr


Excel iinde bir makro ya da VBA kodu yazmak iin Visual Basic ara ubuu zerinde yer alan Visual Basic Editor kullanlr.

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.

B. Bir Procedure'n Yaps


Visual Basic dzenleyici ortamna yaratlacak olan program kokdu makro ya da procedure (yordam) olarak adlandrlr. Visual Basicte deiik trde yordamlar (procedure) kullanlr: Sub Function Property Bir Sub yordam herhangi bir deer dndrmez. arlarak ya da bir olaya tepki olarak alr. Function yordamlar ise bir deer dndrler. rnein bir faiz hesabnn sonucunu dndrrler. Property yordamlar ise bir deer dndrler, atama yaparlar ve nesnelerin referanslarn dzenlerler. Bir Sub yordamnn yaps: [Private|Public][Static] Sub yordam ad (argmanlar) Deyimler End Sub Yordam altrldnda Sub ve End deyimleri arasnda kalan satrlar iletilir. Sub yordamlar standart modller, class modller ve form modlleri iinde yer alrlar. Sub yordamlar varsaym olarak btn modllerde Public tanmlanr. Bunun anlam bu yordamlarn uygulamann heryerinden (dier modllerden) arlabilmesidir.

-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.

rnek: Dereceyi Fahrenheit'e eviren fonksiyon Fonksiyonun tanm:


Function Fahrenheit(x) Fahrenheit = x * 9 / 5 + 32 End Function

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.

Nesne Application Workbook Worksheet Range Chart

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

2. Nesnelerinin nemli zellikleri


Her nesnenin ok sayda zellii vardr. Aadaki tabloda yaygn kullanlan zellikler yer almaktadr: zellik ActiveCell ActiveSheet ActiveWorkbook Bold Italic Column Row ColumnWidth Hight Width RowHeight Selection Value Aklama Aktif pencerenin aktif hcresi Aktif alma Kitabnn aktif alma Tablosu Excel'deki aktif alma Tablosu Metnin harflerinin kaln grnmesi Metnin harflerinin yatk grnmesi Bir alandaki ilk kolonu tanmlayan say Bir alandaki ilk satr tanmlayan say Belirtilen alanda kolonlarn genilii Nesnenin ykseklii Nesnenin genilii Belirtilen alandaki satrlarn ykseklii Seilen alan ya da nesne Bir hcrenin iindeki deer

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

4. Nesnelerin nemli Metotlar


Her nesnenin ok sayda metotu vardr. Aadaki tabloda yaygn kullanlan metotlar yer almaktadr: Metot Add Clear Aklama Ayn tipte yeni bir nesne yaratr Belirtilen alann silinmesini

- 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

1. A1 gsterimi ile hcre ve aralik.


Range metodunu kullanarak A1 gsterimi ile hcre y ada aralk seebilirsiniz. Aadaki altprogram A1:D5 aralndaki hcrelerin grnmnu koyu (bold) olarak deitirir.

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

Aada grlen ktda excel sayfas ve kod sayfas birletirilerek verilmitir

Soruda kullanlan activecell komutu hcrenin zerinde bulunduumuz alan vermek iin

- 16 kullanlr. ********************************************************************************

Soru 2:Excel alma sayfalarnn izgilerini silmek ve geri getirmek

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

Soru11:altmz excel hcrelerinde mouse ikonun hareketini butonlara atama


Sub Dme1_Tklat() ' bir satr alta gider ActiveCell.Offset(1, 0).Select End Sub Sub Dme2_Tklat() 'bir sutun saga ilerler ActiveCell.Offset(0, 1).Select End Sub Sub Dme3_Tklat() 'bir satr alta br sutun saga ilerler ActiveCell.Offset(1, 1).Select End Sub Sub Dme4_Tklat() 'bir satr ste br sutun sola ilerler ActiveCell.Offset(-1, -1).Select 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

ncelikle seilen blgenin hafzaya alnp

Dim bolge As Range bu blgenin set komutu

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. ************************************************************************

Soru14:altmz excel hcrelerinde dolu ve bo hcrelerinin saym, renklendirilmesi,seimi

- 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.

Soru17:Hcre alanlarn snrlandrmak istersek aadaki forml kullanmamz yeterlidir.


Sub alansnrlandrma_Dme1_Tklat() Worksheets("hcre say").ScrollArea = "A1:A20" End Sub

Soru18:Hcreleri renklendirme ve ardk olarak veri ile doldurmak

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

- 27 Soru19:Hcreleri kstasa gre renklendirme

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.

Sub Dim Dim i =

Dme1_Tklat() i As Integer k As Integer 2

- 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

Sub Dim i = Rem Rem

Sayfa1_Dme1_Tklat() i As Integer 3 akla Range("G3", "G18").Clear

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 -

You might also like