You are on page 1of 44

Makro Programlama Dersleri r. Gr.

Ramazan BAYKAL

MAKRO PROGRAMLAMA DERS NOTLARI

Excel ierisinde kaydedilen visual basic programlama komutlaryla alarak program


gelitirme faaliyetine makro programlama denilmektedir. Bu derste Excel alma say-
fasnda makro kaydederek ve kodlar inceleyerek makro programlarn anlamaya al-
acaz. Form tasarlama, bileenleri ekleme, modl ekleme, kod yazma ilemleri yapa-
caz. Form elemanlar zelliklerini reneceiz.

1
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Makrolar altrma ayar


Makrolar gvenlik nedeniyle varsaylan olarak devre d braklmaktadr. Makrolarn
altrlmas iin etkinletirmek gereklidir. lem admlar aadaki gibidir.

Dosya mens
Excel seenekleri
Gven merkezi
Gven merkezi ayarlar butonu
Makro ayarlar
Tm Makrolar etkinletir seimi
Tamam butonuyla ilemi bitiriniz.

Ayrca makro bulunan Excel alma kitabnz kaydederken dosya tr seimi yapa-
rak da altrmanz mmkndr. Tr Makro erebilen Excel alma Kitab

2
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

rnek uygulama i Kazan Tablosu


Bir firmadaki iilerin alt gn saysna gre kazancn hesaplayan bir makro ya-
znz.

Gnlk creti makro program ierisinde gun=70 olarak tanmlaynz. Hesaplamalar


buna gre yaparak kazan tablosunu oluturunuz.

3
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Form ve Form Bileenleri


Program ara yz hazrlamak iin formlara ihtiya vardr. Formlar zerine eitli nes-
neler yerletirilerek ara yz ierii tanmlanr. Microsoft Visual Basic kod penceresinde
Insert mensnden UserForm satr tklanarak form eklenir. Form eklenince otomatik
olarak Toolbox (ara kutusu) grnr hale gelmektedir. Aada bir form ve zerine
baz nesneler (Controls) eklenmitir. Form bileenlerine kontroller de denilmektedir.

Label

Etiket anlamna gelen bu nesne ile form zerine istediiniz konuma metin ekleyebilir-
siniz. Eklediiniz metni zellikler penceresinden yaz tipi ile bykln, grnm-
n deitirmeniz mmkndr.

TextBox

Metin kutusu anlamna gelen bu nesne ile form zerine istediiniz konuma metin giri
kutusu ekleyebilirsiniz. Eklediiniz giri kutusuna girilecek olan metni zellikler pen-
ceresinden yaz tipi ile bykln, grnmn deitirmeniz mmkndr.

CommandButton

Komut butonu anlamna gelen bu nesne ile form zerine istediiniz konuma komut
butonu ekleyebilirsiniz. Eklediiniz komut butonu zerine girilecek olan metni zellik-
ler penceresinden belirleyip, yaz tipi ile bykln, rengini ve grnmn dei-
tirmeniz mmkndr.

4
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Properties

zellikler anlamna gelen bu pencerede seili olan form nesnesine ait zellikler ayarla-
nabilmektedir.

Caption : Balk veya grnecek metin

Font : Yaz tipi zellikleri

ForeColor : n renk, yaz rengi

BackColor : Arka renk, zemin rengi

Name : Nesneye verilecek isim

Value : Deer

Text : Metin

Height : Ykseklik

Width : Genilik

Private Sub CommandButton1_Click()

TextBox3.Value = TextBox1.Value * TextBox2.Value

End Sub

5
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Private Sub CommandButton2_Click()

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

End Sub

Private Sub CommandButton3_Click()

UserForm2.Hide

End Sub

6
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Form zellikleri
Name : Form ad
BackColor : Form rengi
BorderStyle : Pencere kenarl stili
Caption : Pencere bal
Enabled : Kullanlabilirlik (True, False)
Font : Yaz tipi zellikleri
ForeColor : Metin rengi
Height : Form ykseklii
Left : Formun ekrann sol kenardan uzakl
MouseIcon : Fare simgesi
MousePointer : Fare iaretisi
Picture : Form yzeyine resim ekleme
PictureAlignment : Form yzeyine eklenen resmin hizalanmas
PictureSizeMode : Form yzeyine eklenen resmin boyutlandrma modu
PictureTiling : Form yzeyine eklenen resmi deme (True, False)
ScrollBars : Kaydrma ubuklar
StartUpPosition : Formun balang pozisyonu
Top : Formun ekrann st kenardan uzakl
WhatThisButton : Bu nedir butonu ekler (True, False)
Width : Formun genilii
Zoom : Formu bytme/kltme yzdesi

Alr liste kutusu yapma

7
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Form zerine Bir adet Label ve Bir adet comboBox yerletiriniz.

Sayfa1de ders isimlerini nceden yaznz.

ComboBoxRowSource zelliine Sayfa1!A1:A10 yaznz.

ComboBoxText zelliineDers seimi yapnz : ifadesini yaznz.

Label iin Ders seimi ifadesini Caption olarak belirtiniz.

F5 ile altrnz.

8
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Liste kutusu yapma

Form zerine Bir adet Label ve Bir adet ListBox yerletiriniz.


Sayfa1de ders isimlerini nceden yaznz.
ListBoxRowSource zelliine Sayfa1!A1:A10 yaznz.
Label iin Ders seimi ifadesini Caption olarak belirtiniz.
F5 ile altrnz.

9
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

MultiPage yapma

Form zerine bir adet MultiPage, Pageler ierisine birka tane CheckBox yerletiriniz.
Page1 Caption zelliini Zorunlu Dersler olarak deitiriniz.
Page2Caption zelliini Semeli Dersler olarak deitiriniz.
CheckBoxcaptionlarn ders isimleri olarak belirleyiniz. F5 tuuyla altrnz.

10
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

GrupBox ve OptionButton hazrlama

Form zerine bir adet GrupBox yerletiriniz. Caption zelliine Eitim Durumu yaz-
nz.
GrupBox ierisine drt adet OptionButton yerletiriniz. Caption zelliine lkokul, Or-
taokul, Lise, niversite kelimelerini yaznz.
Form zerine bir adet Label yerletiriniz. Caption zelliine Tahsil Durumu yaznz.
Font zelliinde yaz boyutunu 12 ve kaln seiniz.
Form zerine bir adet TextBox yerletiriniz. Font zelliinde yaz boyutunu 12 ve kaln
seiniz.
Form zerine bir adet CommandButton yerletiriniz. Caption zelliine Kaydet yaz-
nz. Font zelliinde yaz boyutunu 11 ve kaln seiniz.

CommandButton1 nesnesi altna yazlacak kodlar u ekildedir:


Private Sub CommandButton1_Click()
Range("B1").Value = TextBox1.Text
End Sub

OptionButton nesneleri iin yazlacak kodlar u ekildedir:

Private Sub OptionButton1_Click()


TextBox1.Text = "Zayf"
End Sub

11
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Private Sub OptionButton2_Click()


TextBox1.Text = "dare eder"
End Sub

Private Sub OptionButton3_Click()


TextBox1.Text = "yi"
End Sub

Private Sub OptionButton4_Click()


TextBox1.Text = "ok iyi"
End Sub

ToggleButton Kullanm

Deitirici dmeleri anlamnda kullanlr.

Form zerine bir adet ToggleButton yerletiriniz. Caption zelliine Resmi Gizle yaz-
nz.
Form zerine bir adet Image yerletiriniz. Picture zelliini kullanarak bir resim seiniz.

ToggleButton altnda altrlacak kodlar u ekilde olmaldr:

12
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Private Sub ToggleButton1_Click()


If ToggleButton1.Value = False Then
Image1.Visible = True
ToggleButton1.Caption = "Resmi Gizle"
Else
Image1.Visible = False
ToggleButton1.Caption = "Resmi Gster"
End If
End Sub

ToggleButtona tkladnzda resmi gizliyor veya gsteriyor. Her seferide buton zerindeki me-
tin duruma uygun olarak deiiyor. Seilen resim Image erevesinden byk veya kk olma-
s durumunda stretch zellii ile ereveye gre boyutlandrabilirsiniz.
Image1.PictureSizeMode=1- fmPictureSizeModeStretch gibi.

13
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

SpinButton ve ScrollBar Kullanm

SpinButton, deer deitirici olarak bilinen bir form nesnesidir. zerindeki aa/yukar veya
saa/sola doru ok iaretlerine tklayarak deer deitirilir. Balang deeri belirlenebilir. Mi-
nimum ve Maksimum deerler belirlenebilir. Orientation zellii ile pozisyonu deiebilir.

Balangta SpinButton deeri Minimum 0, Maximum 100 dr. stenirse bu deerler -10/+10
gibi deitirilebilir.

ScrollBar, kaydrma ubuu olarak bilinen bir form nesnesidir. zerindeki aa/yukar veya
saa/sola doru ok iaretlerine tklayarak deer deitirilir. Balang deeri belirlenebilir. Mi-
nimum ve Maksimum deerler belirlenebilir. Orientation zellii ile pozisyonu deiebilir.

Balangta ScrollBar deeri Minimum 0, Maximum 32767 dir. stenirse bu deerler -100/+100
gibi deitirilebilir.

rnek uygulamada form zerine bir adet SpinButton, bir adet ScrollBar, iki adet label nesnesi,
iki adet TextBox nesnesi yerletirelim. Label nesnelerinin Caption zelliini ekran grntsn-
deki gibi deitirelim. TextBox nesnelerinin BackColor zelliini kullanarak renklendirelim.

SpinButton nesnesine tklandka deer deiecektir. Bu deeri TextBox1 deeri olarak tanm-
layalm.

14
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

ScrollBar nesnesine tklandka deer deiecektir. Bu deeri TextBox2 deeri olarak tanmlaya-
lm.

imdi sra geldi kod yazmaya:

SpinButton nesnesine tklandka altrlacak procedure aadaki gibi olmaldr.

Private Sub SpinButton1_Change()


TextBox1.Value = SpinButton1.Value
End Sub

ScrollBar nesnesine tklandka altrlacak procedure aadaki gibi olmaldr.

Private Sub ScrollBar1_Change()


TextBox2.Value = ScrollBar1.Value
End Sub

Kodlar yazlp altrldnda aadaki grntye ulaabilirsiniz. Deerleri fareyle deitiriniz.


ScrolBar zerindeki deer noktasn fareyle tutup ekerek de deeri deitirmek mmkndr.

15
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

For Dngs
Bir ilemi tekrarlamak iin oluturulan programlama yapsdr. Bir deiken, balang ve biti
deerleri belirlenmelidir.
Aadaki form tasarmn yapalm. Yazdr butonu altna gerekli kodlar yazalm.
rnek olarak girilen bir metni yineleme says kadar tekrarlayarak hcrelere yazdralm.

Kodlar u ekilde olmaldr:


PrivateSub CommandButton1_Click()
For i = 1 To TextBox1.Value
Range("A" & i).Value = TextBox2.Value
Next i
EndSub

16
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

If sorgusu
Bir deikeni veya bir durumu sorgulamak iin kullanlan programlama yapsdr.
Aadaki form tasarmn yapalm. Yazdr butonu altna gerekli kodlar yazalm.
rnek olarak onaylanm dersleri hcrelere yazdralm.

Kodlar u ekilde olmaldr:

PrivateSub CommandButton1_Click() If CheckBox3.Value = True Then


If CheckBox1.Value = True Then Range("D3").Value = CheckBox3.Caption
Range("D1").Value = CheckBox1.Caption EndIf
EndIf If CheckBox4.Value = True Then
If CheckBox2.Value = True Then Range("D4").Value = CheckBox4.Caption
Range("D2").Value = CheckBox2.Caption EndIf
EndIf EndSub

17
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Onay kutusunun her iki durumunu da kontrol etmek isterseniz kodlar aadaki ekilde hazr-
lamalsnz.

Private Sub CommandButton1_Click()


If CheckBox1.Value = True Then
Range("D1").Value = CheckBox1.Caption
Else
Range("D1").Value = ""
End If
If CheckBox2.Value = True Then
Range("D2").Value = CheckBox2.Caption
Else
Range("D2").Value = ""
End If
If CheckBox3.Value = True Then
Range("D3").Value = CheckBox3.Caption
Else
Range("D3").Value = ""
End If
If CheckBox4.Value = True Then
Range("D4").Value = CheckBox4.Caption
Else
Range("D4").Value = ""
End If
End Sub

18
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Bir adet ToggleButton kullanarak derslerin hepsini seebilir veya hi birini semeyebilirsiniz.
Aadaki kodlar ToggleButton altna yazarak buton adn deitirebilir veya onay kutularnn
tmn onaylayp kaldrabilirsiniz.

Private Sub ToggleButton1_Click()


If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Hi Birini Seme"
CheckBox1.Value = True
CheckBox2.Value = True
CheckBox3.Value = True
CheckBox4.Value = True
Else
ToggleButton1.Caption = "Tmn Se"
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
End If
End Sub

Burada rendiiniz makro programlama kodlaryla derslerin hepsini veya dilediiniz birkan
onaylayarak ders kayd yapabilirsiniz.

ift grnml buton balnn hangi durumda nasl olmas gerektiine dikkat ediniz.

19
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

arpm tablosu oluturma

2den 9a kadar saylar iin arpm tablosu komutlar aadadr. Sadece arpm sonularn
gsterir.

2, 4, 6, 8, 10, 12, 14, 16, 18 gibi saylar


verecektir.

Private Sub UserForm_Click()


s=3
Range("B1").Value = "ARPIM TABLOSU"
Range("B2").Value = "______________"
For i = 2 To 9
For j = 1 To 9
Range("B" & s).Value = i * j
s=s+1
Next j
Next i
End Sub

Tablo grnmnde tek stunda hazrlamak iin deiken deerlerini ve aritmetik operatrleri
de grntlemek gerekecektir.
2X1=2
2X2=4
2 X 3 = 6 gibi

Private Sub UserForm_Click()


s=3
Range("B1").Value = "ARPIM TABLOSU"
Range("B2").Value = "------------------------"
For i = 2 To 9
For j = 1 To 9
Range("B" & s).Value = i & " X " & j & " = " & (i * j)
s=s+1
Next j
Next i
End Sub

20
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Tablo grnmnde ok stunda hazrlamak iin deiken deerlerini ve aritmetik operatrleri


de grntlemek istendiinde kod yazlm aadaki gibi olmaldr.
2X1=2 3X1=3
2X2=4 3X2=6
2X3=6 3 X 3 = 9 gibi

Private Sub CommandButton1_Click()


s=3
st = 2
Range("D1").Value = " A R P I M T A B L O S U"
Range("D2").Value = "--------------------------------------------"
For i = 2 To 9
For j = 1 To 9
Cells(s, st).Value = i & " X " & j & " = " & (i * j)
s=s+1
Next j
s=3
st = st + 1
Next i
End Sub

21
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Makro kodlaryla bir butondan herhangi bir program altrma

altrlabilen dosya adlarn kullanarak bu ilem Shell komutuyla yaplmaktadr.


rnein hesap makinas programn altralm.

Gerekli kod yle olmaldr:

Private Sub CommandButton1_Click()


Shell "C:\WINDOWS\system32\Calc.exe", vbNormalFocus
End Sub

Not Defteri program iin gerekli kod ise aadaki gibidir.

Private Sub CommandButton1_Click()


Shell "C:\WINDOWS\system32\notepad.exe", vbNormalFocus
End Sub

22
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Form Olaylar
Activate : Form aktif olduunda

AddControl : Kontrol eklendiinde

BeforeDragOver : Srklemeden nce

BeforeDropOrPaste : Brakma veya yaptrmadan nce

BeforeUpdate : Gncellemeden nce

Click : Fare tek tklandnda

Change : Deerde deiiklik olduunda

DblClick : Fare ift tklandnda

DeActivate : Form pasif olduunda

DropButtonClick : Butonu tklayp braktnda

Error : Hata ile karlatnda

Initialize : Balatldnda

KeyDown : Tu aa indiinde

KeyPress : Tua basl durumda

KeyUp : Tu yukar kalktnda

Layout : Dzenlendiinde

MouseDown : Fare sol tuuna basldnda

MouseMove : Fare zerine geldiinde

MouseUp : Baslan fare sol tuu brakldnda

QueryClose : Sorgu kapandnda

23
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

RemoveControl : Kontrol kaldrldnda

Resize : Form boyutu deitirildiinde

Scroll : Kaydrldnda

Terminate : Form kapatldnda

Zoom : Bytme/Kltme yapldnda

Kontrol(Nesne) Olaylar
AfterUpdate : Gncelleme sonrasnda

BeforeDragOver : Srklemeden nce

BeforeDropOrPaste : Brakma veya yaptrmadan nce

Click : Fare tek tklandnda

DblClick : Fare ift tklandnda

Enter : Enter tuuna basldnda

Error : Hata olduunda

Exit : kldnda

KeyDown : Tua aa indiinde

KeyPress : Tua basl durumda

KeyUp : Tu yukar kalktnda

MouseDown : Fare sol tuuna basldnda

MouseMove : Fare zerine geldiinde

24
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

MouseUp : Baslan fare sol tuu brakldnda

Scroll : Kaydrldnda

SpinDown : Aa dn yapldnda

SpinUp : Yukar dn yapldnda

alma Kitab olaylar


Activate : alma kitab aktif olduunda

AddinInstall : Eklenti kurulduunda

AddinUninstall : Eklenti kaldrldnda

AfterSave : Kaydettikten sonra

AfterXmlExport : XML olarak veri dar aktarldktan sonra

AfterXmlImport : XML olarak veri ieri aktarldktan sonra

BeforeClose : Kapatmadan nce

BeforePrint : Yazdrmadan nce

BeforeSave : Kaydetmeden nce

BeforeXmlExport : XML olarak veri dar aktarldktan nce

BeforeXmlImport : XML olarak veri ieri aktarldktan nce

DeActivate : alma kitab pasif olduunda

NewChart : Yeni grafik sayfas eklendiinde

NewSheet : Yeni alma sayfas eklendiinde

25
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Open : alma kitab aldnda

PivotTableCloseConnection : zet tablo balants kapandnda

PivotTableOpenConnection : zet tablo balants aldnda

RowSetComplete :Satr eylemi tamamlandnda

SheetActivate :alma sayfas aktif olduunda

SheetBeforeDoubleClick : alma sayfasnda ift tklama yapldnda

SheetBeforeRightClick : alma sayfasnda Farenin sa tuuna basldnda

SheetCalculate : alma sayfas hesaplandnda

SheetChange : alma sayfas deitiinde

SheetDeActivate : alma sayfas pasif olduunda

SheetFollowHyperlink : alma sayfasnda kpr izlendiinde

SheetPivotTableAfterValueChange : zet tablosu deeri deitikten sonra

SheetPivotTableBeforeAllocateChange : zet tablosu ayrma deiikliinden nce

SheetPivotTableBeforeCommitChange : zet tablosu deiiklii tamamlamadan nce

SheetPivotTableBeforeDiscardChange : zet tablosu deiiklii atlmadan nce

SheetPivotTableChangeSync : zet tablosu uyumu deitiinde

SheetPivotTableUpdate : zet tablosu gncellendiinde

SheetSelectionChange :Seim deitiinde

Sync :Senkronize

WindowActivate : Pencere etkinletiinde

WindowDeActivate : Pencere pasifletiinde

26
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

alma Sayfas olaylar


Activate : Sayfa aktif olduunda

BeforeDoubleClick : ift tklamadan nce

BeforeRightClick : Farenin sa tuuna basmadan nce

Calculate : Hesaplandnda

Change : Deitiinde

DeActivate : Pasif olduunda

FollowHyperlink : Kpr izlendiinde

PivotTableAfterValueChange :zet tablo deeri deitikten sonra

PivotTableBeforeAllocateChange : zet tablosu ayrma deiikliinden nce

PivotTableBeforeCommitChange : zet tablosu deiiklii tamamlamadan nce

PivotTableBeforeDiscardChange : zet tablosu deiiklii atlmadan nce

PivotTableChangeSync : zet tablosu uyumu deitiinde

PivotTableUpdate : zet tablosu gncellendiinde

SelectionChange : alma sayfas seildiinde

27
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

rnekler :
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox "ift tklama yaptnz"
End Sub

Private Sub UserForm_Resize()


MsgBox UserForm1.Width
End Sub

Private Sub UserForm_Terminate()


MsgBox "program kapattnz."
End Sub

Private Sub TextBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As


Single, ByVal Y As Single)
MsgBox "1. Text kutusu zerindesiniz"
End Sub

Private Sub Label1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As


Single, ByVal Y As Single)
MsgBox "1. Etiket zerindesiniz"
End Sub

Private Sub CommandButton2_Click()


UserForm1.Zoom = TextBox1.Value
End Sub

Private Sub CommandButton1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer,


ByVal X As Single, ByVal Y As Single)
MsgBox "1. Komut Butonu zerindesiniz"
End Sub

Private Sub Workbook_Open()


UserForm1.Show
End Sub

28
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Can-


cel As Boolean)
UserForm1.Show
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


'MsgBox "sayfa1 seildi"
End Sub

Soldaki formda textbox1 iine


gireceimiz saysal deer oranna
gre bytme/klme yaplyor

Ayrca Label, CommandButton


veya TextBox zerine fareyle
gelindiinde alglamakta ve me-
saj kutusunda gerekli mesaj ve-
rilmektedir.

alma kitab aldnda bu


form otomatik olarak ekrana
getirilmektedir.

29
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Personel kayt program


Bu program alan bir text dosyasna kii bilgileri kayd yapar. Kayt zerinde bul-deitir ilem-
leri yapar. C srcsnde Personel.txt isimli bir metin dosyanz bulunmaldr.

Kayt Formu tasarmn hazrlamak iin;


4 adet Label, 4 adet TextBox ve 3 adet CommandButton kullanlacaktr. Captionlar resimdeki
gibi deitirin. Button ve form isimlerini deitirin. (Name=buldegistir, frmkaydet gibi.)

Bul deitir Formu tasarmn hazrlamak iin;


4 adet Label, 4 adet TextBox, 1 adet SpinButton ve 4 adet CommandButton kullanlacaktr.
Captionlar resimdeki gibi deitirin

30
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Bul deitir formu iin makro kodlar aadadr;

Private Sub SpinButton1_SpinDown()


If TextBox1 = Empty Then
TextBox1 = 1
ElseIf TextBox1 < 2 Then
TextBox1 = 1
Else
TextBox1 = TextBox1 - 1
End If
End Sub

Private Sub SpinButton1_SpinUp()


If TextBox1 = Empty Then
TextBox1 = 1
Else
TextBox1 = TextBox1 + 1

31
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

End If
End Sub
Private Sub UserForm_Initialize()
Open "c:\Personel.txt" For Random As #1 Len = Len(ALAN)
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)


If CloseMode <> 1 Then Cancel = 1
End Sub

Kaydet formu iin makro kodlar aadadr;

Private Sub kaydet_Click()


ALAN.adsoyad = TextBox2.Text
ALAN.gorev = TextBox3.Text
ALAN.ikamet = TextBox4.Text
Put #1, TextBox1, ALAN
TextBox1 = TextBox1 + 1
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox2.SetFocus
End Sub
Private Sub UserForm_Initialize()
TextBox1.Locked = True
TextBox2.SetFocus
Open "c:\Personel.txt" For Random As #1 Len = Len(ALAN)
TextBox1 = LOF(1) / Len(ALAN)
TextBox1 = TextBox1 + 1
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)


If CloseMode <> 1 Then Cancel = 1
End Sub

Text dosyasna aadaki gibi kayt yaplacaktr.

32
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Otomatik resim deitirme


rnek olarak resim formatnda 3 adet elimizde bulunsun. Sayfaya bir adet image yerletirmeniz
gerekmektedir. Bir hcreye resim ad yazldnda otomatik olarak Image yenilensin istiyoruz.
Sayfada deiiklik olduunda makro kodlar yeniden altrlmaldr.

res1.jpg res2.jpg res3.jpg

Private Sub Worksheet_Change(ByVal Target As Excel.Range)


On Error Resume Next
Image1.Picture = LoadPicture("D:\Yedek3\ex-makro\" & Cells(1, 1).Value & ".jpg")
If Err.Number = 53 Then
MsgBox "Dosya Bulunamyor!"
Image1.Picture = LoadPicture("D:\Yedek3\ex-makro\dosyayok.jpg")
End If
End Sub

33
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

A1 hcresine res1, res2, res3 yazarak Enter tuuna basldnda resim deiecektir. Resimler
buradaki kodlara gre D:\Yedek3\ex-makro klasrnde bulunmaktadr. Deiiklik yaparak iste-
diiniz klasrdeki resimleri grntleyebilirsiniz.

alma sayfasna kontrol eklemek


alma sayfasna kontrol(nesne) eklemek iin u admlar takip ediniz:

Gelitirici sekmesine geiniz.


Denetimler grubundan ekle simgesini anz.
Eklemek istediiniz kontrole tklaynz.
Sayfa zerinde kontrolnz fareyle izerek oluturunuz.
Boyutlarn, baln vs. deitirmek iin tasarm moduna gemeniz gerekir.

34
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

rnek alma
Kayt Al butonu hazrlayarak, giri kutusu yardmyla notlar alalm. Hesapla butonu yardmyla
girilen vize ve finalin ortalamasn, harf notunu ve GEER/TEKRAR durumunu yazdralm.

Sub Kaytyap()
vize = InputBox("Vize notu ?")
final = InputBox("Final notu ?")
kac = InputBox("Kanc satra yazlacak ?")
Cells(kac, 1).Value = vize
Cells(kac, 2).Value = final
End Sub

Sub Dme1_Tklat()
'
' Dme1_Tklat Makro
' Makro abc tarafndan 28.01.2002 tarihinde kaydedildi.
kyt = InputBox("Kayt Says ?")
For i = 1 To kyt
Cells(i, 3).Value = 0.4 * Cells(i, 1).Value + 0.6 * Cells(i, 2).Value
hh = Cells(i, 3).Value
Select Case hh
Case Is >= 90
Cells(i, 5).Value = "AA"
Case Is >= 80
Cells(i, 5).Value = "BB"
Case Is >= 70
Cells(i, 5).Value = "CC"
Case Is >= 60
Cells(i, 5).Value = "DC"
Case Is >= 50
Cells(i, 5).Value = "DD"
Case Is >= 40
Cells(i, 5).Value = "FD"
Case Is >= 30
Cells(i, 5).Value = "FF"

35
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

End Select

If Cells(i, 3).Value > 59 Then


Cells(i, 4).Value = "GEER"
Else
Cells(i, 4).Value = "Tekrar"
End If
Next i
End Sub

Kayt al butonuna tkladnzda vize, final ve yazlacak satr numaras girilmesi gerekir.

36
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Hesaplama yaptrmak iin satr numaras girmeniz gerekiyor. rnein 4 gibi.

37
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

FONKSYON HAZIRLAMA

Bir Excel alma kitabnda fonksiyon hazrlamak ve tm alma kitaplarnda altrmak iin
XLA trnde kaydetmeniz gerekmektedir. Bu trde kaydedilen dosyalar ADDINS klasrne
kaydedilecektir.
ADDINS (EKLENT) NEDR?

Eklenti demektir. Tanml fonksiyonlar bulunan zel tanmlanm dosyalardr. rnein renci
notlarn harf notuna dntrmek iin fonksiyon yazlarak bu fonksiyon btn alma kitapla-
rnda kullanlabilir.
EKLENTLER KULLANIMA AMAK

Eklentileri kullanma amak iin Gelitirici sekmesinde bulunan Eklentiler simgesine tklaynz ve
kaydettiiniz eklenti dosyanz iaretleyiniz.

FONKSYON HAZIRLAMA

Function KUPKOK(SAYI As Integer)


KUPKOK = SAYI ^ (1 / 3)
End Function

Function Puan(Notu As Integer)


Select Case Notu
Case Is > 100: Puan = "Yanl girilen not"
Case Is >= 90: Puan = "AA"
Case Is >= 85: Puan = "BA"
Case Is >= 75: Puan = "BB"
Case Is >= 70: Puan = "CB"
Case Is >= 60: Puan = "CC"
Case Is >= 55: Puan = "DC"
Case Is >= 50: Puan = "DD"
Case Is >= 40: Puan = "FD"
Case Is >= 0: Puan = "FF"
Case Else: Puan = " Yanl girilen not "
End Select
End Function

38
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

EXCEL DOSYASI AILDIINDA FORM EKRANA GETRME

Excel dosyas aldnda form ekrana getirmek iin aadaki gibi bir prosedr kullanmalyz.
Private Sub Workbook_Open()
UserForm1.Show
End Sub
EXCEL AILDIINDA OTOMATK OLARAK DOSYA AMA

Bir alma kitabnn (Excel dosyasnn) Excel program alnca otomatik olarak almas iin
XLSTART klasrne kaydedilmesi gerekir. Bu klasrn yolu yle olabilir;
C:\Program Files\Microsoft Office\Office14\XLSTART

MAKRO KODLARINA FRE KONULMASI

Makro kodlarn korumak iin ifre ko-

nulmas istenebilir. Bunun iin u admlar

takip edilir;

VBA penceresine geilir.


Tools mens alr.
VBAProject Properties satr tk-
lanr.
Protection sekmesine geilir
Lock Protect for viewing onayla-
nr.
Password (ifre) yazlr.
Confirm Password (Tekrar ifre)
yazlr.
Tamam tklanarak klr.

39
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

BR PROSEDR ERSNDE BAKA PROSEDR ALITIRMA

Bir prosedr ierisinde baka prosedr altrmak mmkndr. Bunun iin sadece prosedr
ad kullanlr. Prosedrler altprogram (Sub) veya fonksiyon(function) olabilir. Aadaki rnekte
hesap1 adl alt programda 1. Stunda 1-20 aras satrlara i deeri yazdrlyor. Sonra hesap2
adl altprogramda 1. Stunda 1-20 aras satrlarda bulunan deerlerin karekkleri 2. Stuna
yazdrlyor. Son olarak hesap isimli alt programda hesap1 ve hesap2 adl altprogramlar
arlyor.
Sub hesap() Sub hesap1() Sub hesap2()
hesap1 For i = 1 To 20 For i = 1 To 20
hesap2 Cells(i, 1) = i Cells(i, 2) = Cells(i, 1) ^ (1 / 2)
End Sub Next i Next i
End Sub End Sub

GRAFK EKLEME KODU

Stun grafii ekleme kodu aadaki gibi yazlmaldr.

Sub graf2()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Range("Sayfa1!$A$22:$B$27")
End Sub

Pasta grafii ekleme kodu aadaki gibi yazlmaldr.

Sub graf3()
ActiveSheet.Shapes.AddChart.Select
ActiveChart.ChartType = xlPie
ActiveChart.SetSourceData Source:=Range("Sayfa1!$A$22:$B$27")
End Sub

40
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

X-Y Dalm grafii ekleme kodu aadaki gibi yazlmaldr.

Sub graf1()
ActiveSheet.Shapes.AddChart.Select % Grafik ekleniyor.
ActiveChart.ChartType = xlXYScatterLines % Grafik tr belirtiliyor.
ActiveChart.SetSourceData Source:=Range("Sayfa1!$A$1:$B$17") % Veri alan belirleni-
yor.
End Sub

X-Y Dalm Grafii butonuna atanan makroyu altrmak iin tklamak gerekmektedir.

41
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

42
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

SAYFAYA BUTON EKLEME

Gelitirici sekmesine geiniz.


Denetimler grubunda bulunan Ekle simgesini anz.
Burada Form denetimlerinden Dme simgesini seiniz.
Sayfada istediiniz yere dmeyi iziniz.

43
Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

BUTONA MAKRO ATAMA

Dme zerinde sa tua basnz.


Makro Ata satrna tklaynz.
Kaytl olan bir makro seiniz.
Tamam butonuna tklaynz.

44