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 sayfasnda makro kaydederek ve kodlar inceleyerek makro programlarn anlamaya alacaz. Form tasarlama, bileenleri ekleme, modl ekleme, kod yazma ilemleri yapacaz. Form elemanlar zelliklerini reneceiz.

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 yaparak da altrmanz mmkndr. Tr Makro erebilen Excel alma Kitab

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

rnek uygulama i Kazan Tablosu


Bir firmadaki iilerin alt gn saysna gre kazancn hesaplayan bir makro yaznz.
Gnlk creti makro program ierisinde gun=70 olarak tanmlaynz. Hesaplamalar
buna gre yaparak kazan tablosunu oluturunuz.

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Form ve Form Bileenleri


Program ara yz hazrlamak iin formlara ihtiya vardr. Formlar zerine eitli nesneler 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 ekleyebilirsiniz. Eklediiniz metni zellikler penceresinden yaz tipi ile bykln, grnmn 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 penceresinden 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 zellikler penceresinden belirleyip, yaz tipi ile bykln, rengini ve grnmn deitirmeniz mmkndr.

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL


Properties
zellikler anlamna gelen bu pencerede seili olan form nesnesine ait zellikler ayarlanabilmektedir.
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

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

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

Form zellikleri
Name
BackColor
BorderStyle
Caption
Enabled
Font
ForeColor
Height
Left
MouseIcon
MousePointer
Picture
PictureAlignment
PictureSizeMode
PictureTiling
ScrollBars
StartUpPosition
Top
WhatThisButton
Width
Zoom

:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:
:

Form ad
Form rengi
Pencere kenarl stili
Pencere bal
Kullanlabilirlik (True, False)
Yaz tipi zellikleri
Metin rengi
Form ykseklii
Formun ekrann sol kenardan uzakl
Fare simgesi
Fare iaretisi
Form yzeyine resim ekleme
Form yzeyine eklenen resmin hizalanmas
Form yzeyine eklenen resmin boyutlandrma modu
Form yzeyine eklenen resmi deme (True, False)
Kaydrma ubuklar
Formun balang pozisyonu
Formun ekrann st kenardan uzakl
Bu nedir butonu ekler (True, False)
Formun genilii
Formu bytme/kltme yzdesi

Alr liste kutusu yapma

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.

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.

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 yaznz.
GrupBox ierisine drt adet OptionButton yerletiriniz. Caption zelliine lkokul, Ortaokul, 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 yaznz. 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 yaznz.
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 metin duruma uygun olarak deiiyor. Seilen resim Image erevesinden byk veya kk olmas 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. Minimum 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. Minimum 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 grntsndeki gibi deitirelim. TextBox nesnelerinin BackColor zelliini kullanarak renklendirelim.
SpinButton nesnesine tklandka deer deiecektir. Bu deeri TextBox1 deeri olarak tanmlayalm.

14

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

ScrollBar nesnesine tklandka deer deiecektir. Bu deeri TextBox2 deeri olarak tanmlayalm.
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 CheckBox1.Value = True Then
Range("D1").Value = CheckBox1.Caption
EndIf
If CheckBox2.Value = True Then
Range("D2").Value = CheckBox2.Caption
EndIf

If CheckBox3.Value = True Then


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

17

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL


Onay kutusunun her iki durumunu da kontrol etmek isterseniz kodlar aadaki ekilde hazrlamalsnz.
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, Cancel 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 mesaj kutusunda gerekli mesaj verilmektedir.
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 ilemleri 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 istediiniz 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 kitaplarnda 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 konulmas istenebilir. Bunun iin u admlar
takip edilir;

VBA penceresine geilir.


Tools mens alr.
VBAProject Properties satr tklanr.
Protection sekmesine geilir
Lock Protect for viewing onaylanr.
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 belirleniyor.
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

You might also like