makro programlama ders notları

Transkript

makro programlama ders notları
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 sayfası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 yapacağı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 yaparak 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 yazı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 nesneler 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 ekleyebilirsiniz. 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 penceresinden 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 özellikler 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 ayarlanabilmektedir.
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
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 başlığı
Kullanılabilirlik (True, False)
Yazı tipi özellikleri
Metin rengi
Form yüksekliği
Formun ekranın sol kenardan uzaklığı
Fare simgesi
Fare işaretçisi
Form yüzeyine resim ekleme
Form yüzeyine eklenen resmin hizalanması
Form yüzeyine eklenen resmin boyutlandırma modu
Form yüzeyine eklenen resmi döşeme (True, False)
Kaydırma çubukları
Formun başlangıç pozisyonu
Formun ekranın üst kenardan uzaklığı
Bu nedir butonu ekler (True, False)
Formun genişliği
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, Ortaokul, 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 metin duruma uygun olarak değişiyor. Seçilen resim Image çerçevesinden büyük veya küçük olması 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. Minimum 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. Minimum 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ündeki 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ımlayalı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ımlayalı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 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. Gör. Ramazan BAYKAL
Onay kutusunun her iki durumunu da kontrol etmek isterseniz kodlar aşağıdaki şekilde hazırlamalı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, Cancel 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 mesaj kutusunda gerekli mesaj verilmektedir.
Ç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şlemleri 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 istediğ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 kitapları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 konulması istenebilir. Bunun için şu adımlar
takip edilir;








VBA penceresine geçilir.
Tools menüsü açılır.
VBAProject Properties satırı tıklanır.
Protection sekmesine geçilir
Lock Protect for viewing onaylanı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ı belirleniyor.
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

Benzer belgeler

İndir

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

Detaylı