You are on page 1of 44

Makro Programlama Dersleri – Öğr. Gör.

Ramazan BAYKAL

MAKRO PROGRAMLAMA DERS NOTLARI

Excel içerisinde kaydedilen visual basic programlama komutlarıyla çalışarak program


geliştirme faaliyetine makro programlama denilmektedir. Bu derste Excel çalışma say-
fasında makro kaydederek ve kodları inceleyerek makro programlarını anlamaya çalı-
şacağız. Form tasarlama, bileşenleri ekleme, modül ekleme, kod yazma işlemleri yapa-
cağız. Form elemanları özelliklerini öğreneceğiz.

1
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Makroları çalıştırma ayarı


Makrolar güvenlik nedeniyle varsayılan olarak devre dışı bırakılmaktadır. Makroların
çalıştırılması için etkinleştirmek gereklidir. İşlem adımları aşağıdaki gibidir.

 Dosya menüsü
 Excel seçenekleri
 Güven merkezi
 Güven merkezi ayarları butonu
 Makro ayarları
 Tüm Makroları etkinleştir seçimi
 Tamam butonuyla işlemi bitiriniz.

Ayrıca makro bulunan Excel çalışma kitabınızı kaydederken dosya türü seçimi yapa-
rak da çalıştırmanız mümkündür. Türü Makro İçerebilen Excel Çalışma Kitabı

2
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Örnek uygulama – İşçi Kazanç Tablosu


Bir firmadaki işçilerin çalıştığı gün sayısına göre kazancını hesaplayan bir makro ya-
zınız.

Günlük ücreti makro programı içerisinde gun=70 olarak tanımlayınız. Hesaplamaları


buna göre yaparak kazanç tablosunu oluşturunuz.

3
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Form ve Form Bileşenleri


Program ara yüzü hazırlamak için formlara ihtiyaç vardır. Formlar üzerine çeşitli nes-
neler yerleştirilerek ara yüz içeriği tanımlanır. Microsoft Visual Basic kod penceresinde
Insert menüsünden UserForm satırı tıklanarak form eklenir. Form eklenince otomatik
olarak Toolbox (araç kutusu) görünür hale gelmektedir. Aşağıda bir form ve üzerine
bazı nesneler (Controls) eklenmiştir. Form bileşenlerine kontroller de denilmektedir.

Label

Etiket anlamına gelen bu nesne ile form üzerine istediğiniz konuma metin ekleyebilir-
siniz. Eklediğiniz metni özellikler penceresinden yazı tipi ile büyüklüğünü, görünümü-
nü değiştirmeniz mümkündür.

TextBox

Metin kutusu anlamına gelen bu nesne ile form üzerine istediğiniz konuma metin giriş
kutusu ekleyebilirsiniz. Eklediğiniz giriş kutusuna girilecek olan metni özellikler pen-
ceresinden yazı tipi ile büyüklüğünü, görünümünü değiştirmeniz mümkündür.

CommandButton

Komut butonu anlamına gelen bu nesne ile form üzerine istediğiniz konuma komut
butonu ekleyebilirsiniz. Eklediğiniz komut butonu üzerine girilecek olan metni özellik-
ler penceresinden belirleyip, yazı tipi ile büyüklüğünü, rengini ve görünümünü değiş-
tirmeniz mümkündür.

4
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Properties

Özellikler anlamına gelen bu pencerede seçili olan form nesnesine ait özellikler ayarla-
nabilmektedir.

Caption : Başlık veya görünecek metin

Font : Yazı tipi özellikleri

ForeColor : Ön renk, yazı rengi

BackColor : Arka renk, zemin rengi

Name : Nesneye verilecek isim

Value : Değer

Text : Metin

Height : Yükseklik

Width : Genişlik

Private Sub CommandButton1_Click()

TextBox3.Value = TextBox1.Value * TextBox2.Value

End Sub

5
Makro Programlama Dersleri – Öğr. Gör. 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. Gör. Ramazan BAYKAL

Form Özellikleri
Name : Form adı
BackColor : Form rengi
BorderStyle : Pencere kenarlığı stili
Caption : Pencere başlığı
Enabled : Kullanılabilirlik (True, False)
Font : Yazı tipi özellikleri
ForeColor : Metin rengi
Height : Form yüksekliği
Left : Formun ekranın sol kenardan uzaklığı
MouseIcon : Fare simgesi
MousePointer : Fare işaretçisi
Picture : Form yüzeyine resim ekleme
PictureAlignment : Form yüzeyine eklenen resmin hizalanması
PictureSizeMode : Form yüzeyine eklenen resmin boyutlandırma modu
PictureTiling : Form yüzeyine eklenen resmi döşeme (True, False)
ScrollBars : Kaydırma çubukları
StartUpPosition : Formun başlangıç pozisyonu
Top : Formun ekranın üst kenardan uzaklığı
WhatThisButton : Bu nedir butonu ekler (True, False)
Width : Formun genişliği
Zoom : Formu büyütme/küçültme yüzdesi

Açılır liste kutusu yapma

7
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Form üzerine Bir adet Label ve Bir adet comboBox yerleştiriniz.

Sayfa1’de ders isimlerini önceden yazınız.

ComboBoxRowSource özelliğine Sayfa1!A1:A10 yazınız.

ComboBoxText özelliğine“Ders seçimi yapınız :” ifadesini yazınız.

Label için Ders seçimi ifadesini Caption olarak belirtiniz.

F5 ile çalıştırınız.

8
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Liste kutusu yapma

Form üzerine Bir adet Label ve Bir adet ListBox yerleştiriniz.


Sayfa1’de ders isimlerini önceden yazınız.
ListBoxRowSource özelliğine Sayfa1!A1:A10 yazınız.
Label için Ders seçimi ifadesini Caption olarak belirtiniz.
F5 ile çalıştırınız.

9
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

MultiPage yapma

Form üzerine bir adet MultiPage, Pageler içerisine birkaç tane CheckBox yerleştiriniz.
Page1 Caption özelliğini “Zorunlu Dersler” olarak değiştiriniz.
Page2Caption özelliğini “Seçmeli Dersler” olarak değiştiriniz.
CheckBoxcaptionlarını ders isimleri olarak belirleyiniz. F5 tuşuyla çalıştırınız.

10
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

GrupBox ve OptionButton hazırlama

 Form üzerine bir adet GrupBox yerleştiriniz. Caption özelliğine “Eğitim Durumu” yazı-
nız.
 GrupBox içerisine dört adet OptionButton yerleştiriniz. Caption özelliğine “İlkokul, Or-
taokul, Lise, Üniversite” kelimelerini yazınız.
 Form üzerine bir adet Label yerleştiriniz. Caption özelliğine “Tahsil Durumu” yazınız.
Font özelliğinde yazı boyutunu 12 ve kalın seçiniz.
 Form üzerine bir adet TextBox yerleştiriniz. Font özelliğinde yazı boyutunu 12 ve kalın
seçiniz.
 Form üzerine bir adet CommandButton yerleştiriniz. Caption özelliğine “Kaydet” yazı-
nız. Font özelliğinde yazı boyutunu 11 ve kalın seçiniz.

CommandButton1 nesnesi altına yazılacak kodlar şu şekildedir:


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

OptionButton nesneleri için yazılacak kodlar şu şekildedir:

Private Sub OptionButton1_Click()


TextBox1.Text = "Zayıf"
End Sub

11
Makro Programlama Dersleri – Öğr. Gör. 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 Kullanımı

Değiştirici düğmeleri anlamında kullanılır.

 Form üzerine bir adet ToggleButton yerleştiriniz. Caption özelliğine “Resmi Gizle” yazı-
nız.
 Form üzerine bir adet Image yerleştiriniz. Picture özelliğini kullanarak bir resim seçiniz.

ToggleButton altında çalıştırılacak kodlar şu şekilde olmalıdır:

12
Makro Programlama Dersleri – Öğr. Gör. 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 Göster"
End If
End Sub

ToggleButtona tıkladığınızda resmi gizliyor veya gösteriyor. Her seferide buton üzerindeki me-
tin duruma uygun olarak değişiyor. Seçilen resim Image çerçevesinden büyük veya küçük olma-
sı durumunda stretch özelliği ile çerçeveye göre boyutlandırabilirsiniz.
Image1.PictureSizeMode=1- fmPictureSizeModeStretch gibi.

13
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

SpinButton ve ScrollBar Kullanımı

SpinButton, değer değiştirici olarak bilinen bir form nesnesidir. Üzerindeki aşağı/yukarı veya
sağa/sola doğru ok işaretlerine tıklayarak değer değiştirilir. Başlangıç değeri belirlenebilir. Mi-
nimum ve Maksimum değerler belirlenebilir. Orientation özelliği ile pozisyonu değişebilir.

Başlangıçta SpinButton değeri Minimum 0, Maximum 100 dür. İstenirse bu değerler -10/+10
gibi değiştirilebilir.

ScrollBar, kaydırma çubuğu olarak bilinen bir form nesnesidir. Üzerindeki aşağı/yukarı veya
sağa/sola doğru ok işaretlerine tıklayarak değer değiştirilir. Başlangıç değeri belirlenebilir. Mi-
nimum ve Maksimum değerler belirlenebilir. Orientation özelliği ile pozisyonu değişebilir.

Başlangıçta ScrollBar değeri Minimum 0, Maximum 32767 dir. İstenirse bu değerler -100/+100
gibi değiştirilebilir.

Örnek uygulamada form üzerine bir adet SpinButton, bir adet ScrollBar, iki adet label nesnesi,
iki adet TextBox nesnesi yerleştirelim. Label nesnelerinin Caption özelliğini ekran görüntüsün-
deki gibi değiştirelim. TextBox nesnelerinin BackColor özelliğini kullanarak renklendirelim.

SpinButton nesnesine tıklandıkça değer değişecektir. Bu değeri TextBox1 değeri olarak tanım-
layalım.

14
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

ScrollBar nesnesine tıklandıkça değer değişecektir. Bu değeri TextBox2 değeri olarak tanımlaya-
lım.

Şimdi sıra geldi kod yazmaya:

SpinButton nesnesine tıklandıkça çalıştırılacak procedure aşağıdaki gibi olmalıdır.

Private Sub SpinButton1_Change()


TextBox1.Value = SpinButton1.Value
End Sub

ScrollBar nesnesine tıklandıkça çalıştırılacak procedure aşağıdaki gibi olmalıdır.

Private Sub ScrollBar1_Change()


TextBox2.Value = ScrollBar1.Value
End Sub

Kodlar yazılıp çalıştırıldığında aşağıdaki görüntüye ulaşabilirsiniz. Değerleri fareyle değiştiriniz.


ScrolBar üzerindeki değer noktasını fareyle tutup çekerek de değeri değiştirmek mümkündür.

15
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

For Döngüsü
Bir işlemi tekrarlamak için oluşturulan programlama yapısıdır. Bir değişken, başlangıç ve bitiş
değerleri belirlenmelidir.
Aşağıdaki form tasarımını yapalım. Yazdır butonu altına gerekli kodları yazalım.
Örnek olarak girilen bir metni yineleme sayısı kadar tekrarlayarak hücrelere yazdıralım.

Kodlar şu şekilde olmalıdır:


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

16
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

If sorgusu
Bir değişkeni veya bir durumu sorgulamak için kullanılan programlama yapısıdır.
Aşağıdaki form tasarımını yapalım. Yazdır butonu altına gerekli kodları yazalım.
Örnek olarak onaylanmış dersleri hücrelere yazdıralım.

Kodlar şu şekilde olmalıdır:

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. Gör. Ramazan BAYKAL

Onay kutusunun her iki durumunu da kontrol etmek isterseniz kodlar aşağıdaki şekilde hazır-
lamalısınız.

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. Gör. Ramazan BAYKAL

Bir adet ToggleButton kullanarak derslerin hepsini seçebilir veya hiç birini seçmeyebilirsiniz.
Aşağıdaki kodları ToggleButton altına yazarak buton adını değiştirebilir veya onay kutularının
tümünü onaylayıp kaldırabilirsiniz.

Private Sub ToggleButton1_Click()


If ToggleButton1.Value = True Then
ToggleButton1.Caption = "Hiç Birini Seçme"
CheckBox1.Value = True
CheckBox2.Value = True
CheckBox3.Value = True
CheckBox4.Value = True
Else
ToggleButton1.Caption = "Tümünü Seç"
CheckBox1.Value = False
CheckBox2.Value = False
CheckBox3.Value = False
CheckBox4.Value = False
End If
End Sub

Burada öğrendiğiniz makro programlama kodlarıyla derslerin hepsini veya dilediğiniz birkaçını
onaylayarak ders kaydı yapabilirsiniz.

Çift görünümlü buton başlığının hangi durumda nasıl olması gerektiğine dikkat ediniz.

19
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Çarpım tablosu oluşturma

2’den 9’a kadar sayılar için çarpım tablosu komutları aşağıdadır. Sadece çarpım sonuçlarını
gösterir.

2, 4, 6, 8, 10, 12, 14, 16, 18 gibi sayılar


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 görünümünde tek sütunda hazırlamak için değişken değerlerini ve aritmetik operatörleri
de görüntülemek 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. Gör. Ramazan BAYKAL

Tablo görünümünde çok sütunda hazırlamak için değişken değerlerini ve aritmetik operatörleri
de görüntülemek istendiğinde kod yazılımı aşağıdaki gibi olmalıdır.
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. Gör. Ramazan BAYKAL

Makro kodlarıyla bir butondan herhangi bir programı çalıştırma

Çalıştırılabilen dosya adlarını kullanarak bu işlem Shell komutuyla yapılmaktadır.


Örneğin hesap makinası programını çalıştıralım.

Gerekli kod şöyle olmalıdır:

Private Sub CommandButton1_Click()


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

Not Defteri programı için gerekli kod ise aşağıdaki gibidir.

Private Sub CommandButton1_Click()


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

22
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Form Olayları
Activate : Form aktif olduğunda

AddControl : Kontrol eklendiğinde

BeforeDragOver : Sürüklemeden önce

BeforeDropOrPaste : Bırakma veya yapıştırmadan önce

BeforeUpdate : Güncellemeden önce

Click : Fare tek tıklandığında

Change : Değerde değişiklik olduğunda

DblClick : Fare çift tıklandığında

DeActivate : Form pasif olduğunda

DropButtonClick : Butonu tıklayıp bıraktığında

Error : Hata ile karşılaştığında

Initialize : Başlatıldığında

KeyDown : Tuş aşağı indiğinde

KeyPress : Tuşa basılı durumda

KeyUp : Tuş yukarı kalktığında

Layout : Düzenlendiğinde

MouseDown : Fare sol tuşuna basıldığında

MouseMove : Fare üzerine geldiğinde

MouseUp : Basılan fare sol tuşu bırakıldığında

QueryClose : Sorgu kapandığında

23
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

RemoveControl : Kontrol kaldırıldığında

Resize : Form boyutu değiştirildiğinde

Scroll : Kaydırıldığında

Terminate : Form kapatıldığında

Zoom : Büyütme/Küçültme yapıldığında

Kontrol(Nesne) Olayları
AfterUpdate : Güncelleme sonrasında

BeforeDragOver : Sürüklemeden önce

BeforeDropOrPaste : Bırakma veya yapıştırmadan önce

Click : Fare tek tıklandığında

DblClick : Fare çift tıklandığında

Enter : Enter tuşuna basıldığında

Error : Hata olduğunda

Exit : Çıkıldığında

KeyDown : Tuşa aşağı indiğinde

KeyPress : Tuşa basılı durumda

KeyUp : Tuş yukarı kalktığında

MouseDown : Fare sol tuşuna basıldığında

MouseMove : Fare üzerine geldiğinde

24
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

MouseUp : Basılan fare sol tuşu bırakıldığında

Scroll : Kaydırıldığında

SpinDown : Aşağı dönüş yapıldığında

SpinUp : Yukarı dönüş yapıldığında

Çalışma Kitabı olayları


Activate : Çalışma kitabı aktif olduğunda

AddinInstall : Eklenti kurulduğunda

AddinUninstall : Eklenti kaldırıldığında

AfterSave : Kaydettikten sonra

AfterXmlExport : XML olarak veri dışarı aktarıldıktan sonra

AfterXmlImport : XML olarak veri içeri aktarıldıktan sonra

BeforeClose : Kapatmadan önce

BeforePrint : Yazdırmadan önce

BeforeSave : Kaydetmeden önce

BeforeXmlExport : XML olarak veri dışarı aktarıldıktan önce

BeforeXmlImport : XML olarak veri içeri aktarıldıktan önce

DeActivate : Çalışma kitabı pasif olduğunda

NewChart : Yeni grafik sayfası eklendiğinde

NewSheet : Yeni çalışma sayfası eklendiğinde

25
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Open : Çalışma kitabı açıldığında

PivotTableCloseConnection : Özet tablo bağlantısı kapandığında

PivotTableOpenConnection : Özet tablo bağlantısı açıldığında

RowSetComplete :Satır eylemi tamamlandığında

SheetActivate :Çalışma sayfası aktif olduğunda

SheetBeforeDoubleClick : Çalışma sayfasında çift tıklama yapıldığında

SheetBeforeRightClick : Çalışma sayfasında Farenin sağ tuşuna basıldığında

SheetCalculate : Çalışma sayfası hesaplandığında

SheetChange : Çalışma sayfası değiştiğinde

SheetDeActivate : Çalışma sayfası pasif olduğunda

SheetFollowHyperlink : Çalışma sayfasında köprü izlendiğinde

SheetPivotTableAfterValueChange : Özet tablosu değeri değiştikten sonra

SheetPivotTableBeforeAllocateChange : Özet tablosu ayırma değişikliğinden önce

SheetPivotTableBeforeCommitChange : Özet tablosu değişikliği tamamlamadan önce

SheetPivotTableBeforeDiscardChange : Özet tablosu değişikliği atılmadan önce

SheetPivotTableChangeSync : Özet tablosu uyumu değiştiğinde

SheetPivotTableUpdate : Özet tablosu güncellendiğinde

SheetSelectionChange :Seçim değiştiğinde

Sync :Senkronize

WindowActivate : Pencere etkinleştiğinde

WindowDeActivate : Pencere pasifleştiğinde

26
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Çalışma Sayfası olayları


Activate : Sayfa aktif olduğunda

BeforeDoubleClick : Çift tıklamadan önce

BeforeRightClick : Farenin sağ tuşuna basmadan önce

Calculate : Hesaplandığında

Change : Değiştiğinde

DeActivate : Pasif olduğunda

FollowHyperlink : Köprü izlendiğinde

PivotTableAfterValueChange :Özet tablo değeri değiştikten sonra

PivotTableBeforeAllocateChange : Özet tablosu ayırma değişikliğinden önce

PivotTableBeforeCommitChange : Özet tablosu değişikliği tamamlamadan önce

PivotTableBeforeDiscardChange : Özet tablosu değişikliği atılmadan önce

PivotTableChangeSync : Özet tablosu uyumu değiştiğinde

PivotTableUpdate : Özet tablosu güncellendiğinde

SelectionChange : Çalışma sayfası seçildiğinde

27
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Örnekler :
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
MsgBox "Çift tıklama yaptınız"
End Sub

Private Sub UserForm_Resize()


MsgBox UserForm1.Width
End Sub

Private Sub UserForm_Terminate()


MsgBox "programı kapattınız."
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. Gör. 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 seçildi"
End Sub

Soldaki formda textbox1 içine


gireceğimiz sayısal değer oranına
göre büyütme/küçülme yapılıyor

Ayrıca Label, CommandButton


veya TextBox üzerine fareyle
gelindiğinde algılamakta ve me-
saj kutusunda gerekli mesaj ve-
rilmektedir.

Çalışma kitabı açıldığında bu


form otomatik olarak ekrana
getirilmektedir.

29
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Personel kayıt programı


Bu program açılan bir text dosyasına kişi bilgileri kaydı yapar. Kayıt üzerinde bul-değiştir işlem-
leri yapar. C sürücüsünde Personel.txt isimli bir metin dosyanız bulunmalıdır.

Kayıt Formu tasarımını hazırlamak için;


4 adet Label, 4 adet TextBox ve 3 adet CommandButton kullanılacaktır. Captionları resimdeki
gibi değiştirin. Button ve form isimlerini değiştirin. (Name=buldegistir, frmkaydet gibi.)

Bul değiştir Formu tasarımını hazırlamak için;


4 adet Label, 4 adet TextBox, 1 adet SpinButton ve 4 adet CommandButton kullanılacaktır.
Captionları resimdeki gibi değiştirin

30
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Bul değiştir formu için makro kodları aşağıdadır;

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. Gör. 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 için makro kodları aşağıdadır;

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 dosyasına aşağıdaki gibi kayıt yapılacaktır.

32
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Otomatik resim değiştirme


Örnek olarak resim formatında 3 adet elimizde bulunsun. Sayfaya bir adet image yerleştirmeniz
gerekmektedir. Bir hücreye resim adı yazıldığında otomatik olarak Image yenilensin istiyoruz.
Sayfada değişiklik olduğunda makro kodları yeniden çalıştırılmalıdır.

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 Bulunamıyor!"
Image1.Picture = LoadPicture("D:\Yedek3\ex-makro\dosyayok.jpg")
End If
End Sub

33
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

A1 hücresine res1, res2, res3 yazarak Enter tuşuna basıldığında resim değişecektir. Resimler
buradaki kodlara göre D:\Yedek3\ex-makro klasöründe bulunmaktadır. Değişiklik yaparak iste-
diğiniz klasördeki resimleri görüntüleyebilirsiniz.

Çalışma sayfasına kontrol eklemek


Çalışma sayfasına kontrol(nesne) eklemek için şu adımları takip ediniz:

 Geliştirici sekmesine geçiniz.


 Denetimler grubundan ekle simgesini açınız.
 Eklemek istediğiniz kontrole tıklayınız.
 Sayfa üzerinde kontrolünüzü fareyle çizerek oluşturunuz.
 Boyutlarını, başlığını vs. değiştirmek için tasarım moduna geçmeniz gerekir.

34
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Örnek Çalışma
Kayıt Al butonu hazırlayarak, giriş kutusu yardımıyla notları alalım. Hesapla butonu yardımıyla
girilen vize ve finalin ortalamasını, harf notunu ve GEÇER/TEKRAR durumunu yazdıralım.

Sub Kayıtyap()
vize = InputBox("Vize notu ?")
final = InputBox("Final notu ?")
kac = InputBox("Kaçıncı satıra yazılacak ?")
Cells(kac, 1).Value = vize
Cells(kac, 2).Value = final
End Sub

Sub Düğme1_Tıklat()
'
' Düğme1_Tıklat Makro
' Makro abc tarafından 28.01.2002 tarihinde kaydedildi.
kyt = InputBox("Kayıt Sayısı ?")
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. Gör. Ramazan BAYKAL

End Select

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


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

Kayıt al butonuna tıkladığınızda vize, final ve yazılacak satır numarası girilmesi gerekir.

36
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

Hesaplama yaptırmak için satır numarası girmeniz gerekiyor. Örneğin 4 gibi.

37
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

FONKSİYON HAZIRLAMA

Bir Excel çalışma kitabında fonksiyon hazırlamak ve tüm çalışma kitaplarında çalıştırmak için
XLA türünde kaydetmeniz gerekmektedir. Bu türde kaydedilen dosyalar ADDINS klasörüne
kaydedilecektir.
ADDINS (EKLENTİ) NEDİR?

Eklenti demektir. Tanımlı fonksiyonlar bulunan özel tanımlanmış dosyalardır. Örneğin Öğrenci
notlarını harf notuna dönüştürmek için fonksiyon yazılarak bu fonksiyon bütün çalışma kitapla-
rında kullanılabilir.
EKLENTİLERİ KULLANIMA AÇMAK

Eklentileri kullanıma açmak için Geliştirici sekmesinde bulunan Eklentiler simgesine tıklayınız ve
kaydettiğiniz eklenti dosyanızı işaretleyiniz.

FONKSİYON 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. Gör. Ramazan BAYKAL

EXCEL DOSYASI AÇILDIĞINDA FORM EKRANA GETİRME

Excel dosyası açıldığında form ekrana getirmek için aşağıdaki gibi bir prosedürü kullanmalıyız.
Private Sub Workbook_Open()
UserForm1.Show
End Sub
EXCEL AÇILDIĞINDA OTOMATİK OLARAK DOSYA AÇMA

Bir çalışma kitabının (Excel dosyasının) Excel programı açılınca otomatik olarak açılması için
XLSTART klasörüne kaydedilmesi gerekir. Bu klasörün yolu şöyle olabilir;
C:\Program Files\Microsoft Office\Office14\XLSTART

MAKRO KODLARINA ŞİFRE KONULMASI

Makro kodlarını korumak için şifre ko-

nulması istenebilir. Bunun için şu adımlar

takip edilir;

 VBA penceresine geçilir.


 Tools menüsü açılır.
 VBAProject Properties satırı tık-
lanır.
 Protection sekmesine geçilir
 Lock Protect for viewing onayla-
nır.
 Password (Şifre) yazılır.
 Confirm Password (Tekrar Şifre)
yazılır.
 Tamam tıklanarak çıkılır.

39
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

BİR PROSEDÜR İÇERİSİNDE BAŞKA PROSEDÜR ÇALIŞTIRMA

Bir prosedür içerisinde başka prosedür çalıştırmak mümkündür. Bunun için sadece prosedür
adı kullanılr. Prosedürler altprogram (Sub) veya fonksiyon(function) olabilir. Aşağıdaki örnekte
hesap1 adlı alt programda 1. Sütunda 1-20 arası satırlara i değeri yazdırılıyor. Sonra hesap2
adlı altprogramda 1. Sütunda 1-20 arası satırlarda bulunan değerlerin karekökleri 2. Sütuna
yazdırılıyor. Son olarak hesap isimli alt programda hesap1 ve hesap2 adlı altprogramlar
çağrılıyor.
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

GRAFİK EKLEME KODU

Sütun grafiği ekleme kodu aşağıdaki gibi yazılmalıdır.

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

Pasta grafiği ekleme kodu aşağıdaki gibi yazılmalıdır.

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. Gör. Ramazan BAYKAL

X-Y Dağılım grafiği ekleme kodu aşağıdaki gibi yazılmalıdır.

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

X-Y Dağılım Grafiği butonuna atanan makroyu çalıştırmak için tıklamak gerekmektedir.

41
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

42
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

SAYFAYA BUTON EKLEME

 Geliştirici sekmesine geçiniz.


 Denetimler grubunda bulunan Ekle simgesini açınız.
 Burada Form denetimlerinden Düğme simgesini seçiniz.
 Sayfada istediğiniz yere düğmeyi çiziniz.

43
Makro Programlama Dersleri – Öğr. Gör. Ramazan BAYKAL

BUTONA MAKRO ATAMA

 Düğme üzerinde sağ tuşa basınız.


 Makro Ata satırına tıklayınız.
 Kayıtlı olan bir makro seçiniz.
 Tamam butonuna tıklayınız.

44

You might also like