Anda di halaman 1dari 37

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 yap acaz. 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 yap arak 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 y aznz. 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 ekleni r. 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 pe nceresinden 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 zelli kler 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 Font ForeColor BackColor Name Value Text Height Width : Balk veya grnecek metin : Yaz tipi zellikleri : n renk, yaz rengi : Arka renk, zemin rengi : Nesneye verilecek isim : Deer : Metin : Ykseklik : 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 AddControl BeforeDragOver BeforeDropOrPaste BeforeUpdate Click Change DblClick DeActivate DropButtonClick Error Initialize KeyDown KeyPress KeyUp Layout MouseDown MouseMove MouseUp QueryClose : Form aktif olduunda : Kontrol eklendiinde : Srklemeden nce : Brakma veya yaptrmadan nce : Gncellemeden nce : Fare tek tklandnda : Deerde deiiklik olduunda : Fare ift tklandnda : Form pasif olduunda : Butonu tklayp braktnda : Hata ile karlatnda : Balatldnda : Tu aa indiinde : Tua basl durumda : Tu yukar kalktnda : Dzenlendiinde : Fare sol tuuna basldnda : Fare zerine geldiinde : Baslan fare sol tuu brakldnda : Sorgu kapandnda

23

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL


RemoveControl Resize Scroll Terminate Zoom : Kontrol kaldrldnda : Form boyutu deitirildiinde : Kaydrldnda : Form kapatldnda : Bytme/Kltme yapldnda

Kontrol(Nesne) Olaylar
AfterUpdate BeforeDragOver BeforeDropOrPaste Click DblClick Enter Error Exit KeyDown KeyPress KeyUp MouseDown MouseMove : Gncelleme sonrasnda : Srklemeden nce : Brakma veya yaptrmadan nce : Fare tek tklandnda : Fare ift tklandnda : Enter tuuna basldnda : Hata olduunda : kldnda : Tua aa indiinde : Tua basl durumda : Tu yukar kalktnda : Fare sol tuuna basldnda : Fare zerine geldiinde

24

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL


MouseUp Scroll SpinDown SpinUp : Baslan fare sol tuu brakldnda : Kaydrldnda : Aa dn yapldnda : Yukar dn yapldnda

alma Kitab olaylar


Activate AddinInstall AddinUninstall AfterSave AfterXmlExport AfterXmlImport BeforeClose BeforePrint BeforeSave BeforeXmlExport BeforeXmlImport DeActivate NewChart NewSheet : alma kitab aktif olduunda : Eklenti kurulduunda : Eklenti kaldrldnda : Kaydettikten sonra : XML olarak veri dar aktarldktan sonra : XML olarak veri ieri aktarldktan sonra : Kapatmadan nce : Yazdrmadan nce : Kaydetmeden nce : XML olarak veri dar aktarldktan nce : XML olarak veri ieri aktarldktan nce : alma kitab pasif olduunda : Yeni grafik sayfas eklendiinde : Yeni alma sayfas eklendiinde

25

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL


Open PivotTableCloseConnection PivotTableOpenConnection RowSetComplete SheetActivate SheetBeforeDoubleClick SheetBeforeRightClick SheetCalculate SheetChange SheetDeActivate SheetFollowHyperlink SheetPivotTableAfterValueChange : alma kitab aldnda : zet tablo balants kapandnda : zet tablo balants aldnda :Satr eylemi tamamlandnda :alma sayfas aktif olduunda : alma sayfasnda ift tklama yapldnda : alma sayfasnda Farenin sa tuuna basldnda : alma sayfas hesaplandnda : alma sayfas deitiinde : alma sayfas pasif olduunda : alma sayfasnda kpr izlendiinde : zet tablosu deeri deitikten sonra

SheetPivotTableBeforeAllocateChange : zet tablosu ayrma deiikliinden nce SheetPivotTableBeforeCommitChange : zet tablosu deiiklii tamamlamadan nce SheetPivotTableBeforeDiscardChange : zet tablosu deiiklii atlmadan nce SheetPivotTableChangeSync SheetPivotTableUpdate SheetSelectionChange Sync WindowActivate WindowDeActivate : zet tablosu uyumu deitiinde : zet tablosu gncellendiinde :Seim deitiinde :Senkronize : Pencere etkinletiinde : Pencere pasifletiinde

26

Makro Programlama Dersleri r. Gr. Ramazan BAYKAL

alma Sayfas olaylar


Activate BeforeDoubleClick BeforeRightClick Calculate Change DeActivate FollowHyperlink PivotTableAfterValueChange PivotTableBeforeAllocateChange PivotTableBeforeCommitChange PivotTableBeforeDiscardChange PivotTableChangeSync PivotTableUpdate SelectionChange : Sayfa aktif olduunda : ift tklamadan nce : Farenin sa tuuna basmadan nce : Hesaplandnda : Deitiinde : Pasif olduunda : Kpr izlendiinde :zet tablo deeri deitikten sonra : zet tablosu ayrma deiikliinden nce : zet tablosu deiiklii tamamlamadan nce : zet tablosu deiiklii atlmadan nce : zet tablosu uyumu deitiinde : zet tablosu gncellendiinde : 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 deitirm e


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

Anda mungkin juga menyukai