With end with ifadelerinin nesne veya koleksiyonlarla kullanılması


VBA With ifadeleri, aynı nesne veya koleksiyonla ilgili karmaşık kodları basitleÅŸtirmenizi saÄŸlar. Sürekli olarak aynı nesneye gönderme yapmak yerine, bu nesneyi belirleyerek üzerinde bir dizi eylem gerçekleÅŸtirmek için bir With… End With ifadesi kullanabilirsiniz. Ortaya çıkan kodun okunması daha kolay olduÄŸu gibi, aynı zamamanda daha da hızlı çalışır. Bir with ifadesinin söz dizimi aÅŸağıdaki gibidir:

With object
 Olaylar (kodlar)
Ent with
Buradaki object, bir koleksiyonda dahil olmak üzere herhangi bir nesne olabilir. Örnek olarak bir pargrafın etkin biçemini, farklı bir biçem uygulamadan biraz süslemek için bir paragrafa uygulamak isteyebileceğiniz bir biçimlendirmeyi ele alalım. Diyelim ki farklı bir font daha büyük bir punto ve alt çizgisiz yazı karakterli uygulamaya, ancak paragrafın hala heading 1 biçemi ile belirlenmesine karar verdiğiniz. Bu biçimlendirmeyi ona aşağıdaki üç ifadeyle uygulayabirizsiniz:

Selection.Font.Name =”Arial Black”
Selection.Font.Size = 24
Selection.Font.Underline = wdUnderlineNone


Altenatif olarak bu kodu basitleştirmek için bir with ifadesi de kullanabilirsiniz.

With selection.Font
 .Name=”Arial Black”
.Size =24
.Underline = wdUnderlineNone
End with


Buradaki with ifadesi ile End with ifadesi arasındaki bütün ifadeler with ifadesi ile tanımlanan selection.font nesnesi için geçerlidir. Benzer bir biçimde, etkin seçime pragraf biçimlendirmesi uygulamak içinde bir with ifadesi kullanabilirsizin. Aşağıdaki ifadeler paragraf öncesi boşluğu, punto. Sonrası boşluğu da 12 punto yapar

With selection.ParagraphFormat
 .spaceBefore = 0
 .SpaceAfter=12
End with


Burada with ifadesi ile End with ifadesi arasındaki bütün ifadeler selection.ParagraphFormat nesnesi için geçerlidir. Aynı zamanda bu iki with ifadesini, her ikisinde de ortak olan Selection. Nesnesini kullanarak aşağıdaki şekilde birleştirebilirsizin:

With selection
 .Font.Name = “Arial Balack”
 .Font.Size = 25
 .Font.Underline= wdUnderlineNone
.ParagraphFormat
 .spaceBefore= 0
 .spaceAfetr= 12
End with


Ayrıca aşağıdaki örnekte olduğu gibi with ifadelerini iç içe de geçirebilirsiniz. Bu örnekte iç içe geçirmenin kullanılması (düzgün çalışsa da) şart değildir ama başka durumlarda onu gerekli bulabilirsiniz.

With selection
 .Font.Name = “Arial Balack”
 .Font.Size = 25
 .Font.Underline= wdUnderlineNone
End with


With.ParagraphFormat
 .spaceBefore= 0
 .spaceAfetr= 12
End with
End with

İPUCU: VBA kullanmayı öğrenirken bir with ifadesi oluşturmanın en kolay yolu, makro kaydediciyi üzerinde çalışmak istediğiniz nesnelere erişim yöntemini ve üzerlerinde gerçekleştiriğiniz eylemleri kaydetmek için kullanmaktır. Bunu yaptıktan sonra kodu visual Basic Editörde düzenleyin ve bu eylemleri gerçekleştirmek için kaydedilmiş olan kodun daha basit bir sürümünü kullanan with ifadesi oluşturun.

msgbox özellikleri, (mesaj kutuları)

msgbox özellikleri, (mesaj kutuları)




Function FileOrFolderName(InputString As String, _
ReturnFileName As Boolean) As String

Dim i As Integer, FolderName As String, FileName As String
i = 0
While InStr(i + 1, InputString, Application.PathSeparator) > 0
    i = InStr(i + 1, InputString, Application.PathSeparator)
Wend
If i = 0 Then
    FolderName = CurDir
Else
    FolderName = Left(InputString, i - 1)
End If
FileName = Right(InputString, Len(InputString) - i)
If ReturnFileName Then
    FileOrFolderName = FileName
Else
    FileOrFolderName = FolderName
End If
End Function

Sub TestFileOrFolderName()
‘cdrom sürücüleri msgboxta gösterir
MsgBox FileOrFolderName(ThisWorkbook.FullName, False), , _
    "This Workbook Foldername:"
MsgBox FileOrFolderName(ThisWorkbook.FullName, True), , _
    "This Workbook Filename:"
End Sub
________________________________________
Sub goster()
‘Hücre DeÄŸerinin Msgbox ta gösterilmesi
Dim veri As String
veri = Cells(8, 5).Value '8. satır 5. sütun
MsgBox ("Şu Anda E8 Hücresinde" + vbNewLine + veri _
+ vbNewLine + "DeÄŸeri var")
'vbNewline bir alt satıra indirir.
'chr(13)+chr(10) da yazılabilir
End Sub
________________________________________
Sub Düğme1_Tıklat()
'vbDefaultButton2 parametresi ile aktif olacak buttonun "Hayır"
'olacağını belirtiyoruz. Buylece klavyeden Enter
'tuşuna basılınca tıklanan (ilk olarak) düğmeyi belirleR

Dim Mesaj As String
Mesaj = MsgBox("Program Kapatılsınmı?", vbYesNo + _
vbCritical + vbDefaultButton2) 'ikinci button aktif olsun
If Mesaj = vbYes Then
Application.Quit
Else
MsgBox ("Kapatma Ä°ÅŸlemi iptal Edildi"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub Düğme1_Tıklat()
'Mesaj kutusu en üste
'vbSystemModal; (varsayılan VbApplicationModal dir) Parametresi çalışan
'diğer uygulamaların (Notepad veya calc veya başka form)
'mesaj penceresini kapatıp (üste gelme) kapatamıyacağını belirler

Dim Mesaj As String
Mesaj = MsgBox("Program Kapatılsınmı?", vbYesNo + _
vbCritical + vbDefaultButton2 + vbSystemModal)
If Mesaj = vbYes Then
Application.Quit
Else
MsgBox ("Kapatma Ä°ÅŸlemi iptal Edildi"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub Düğme1_Tıklat()
‘Ä°kili mesaj kutusu (evet hayır)
Dim Mesaj As String
Mesaj = MsgBox("www.kod.gen.tr", vbYesNo)
If Mesaj = vbYes Then
MsgBox ("Evet Düğmesine Tıkladınız"), , "www.kod.gen.tr"
Else
MsgBox ("Hayır Düğmesini Tıkladınız"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub Düğme1_Tıklat()
'İkonlar için kullanılabilecek Seçinekler
'Vbquestion (Soru Ä°konu)
'vbInformation
'VbExclamation (Dikkat Ãœnlem Ä°konu)
'VbCritical (çarpı ikonu Tehlike)
Dim Mesaj As String
Mesaj = MsgBox("www.kod.gen.tr", vbYesNo + vbQuestion)’resimler burada
If Mesaj = vbYes Then
MsgBox ("Evet Düğmesine Tıkladınız"), , "www.kod.gen.tr"
Else
MsgBox ("Hayır Düğmesini Tıkladınız"), , "www.kod.gen.tr"
End If
End Sub
________________________________________
Sub MessageBox3()
' Birdan fazla satırlı msgbox. vbCrLf alt satıra indirir
Dim strMessage As String
strMessage = "Kategorilerle Vba Cd'si" & vbCrLf & "www.kod.gen.tr" & vbCrLf & "A.Aşkın KÜÇÜKKAYA"
MsgBox strMessage
End Sub

________________________________________
Private Sub Workbook_Deactivate()
‘Kodları ThisWorkbook’a yazınız
'Kapanışta Selam
MsgBox ("Yine Bekleriz" & vbCrLf & "Güle Güle"), , "http://www.kod.gen.tr"
End Sub

Private Sub Workbook_Open()
'açılışta selam
MsgBox ("Merhaba HoÅŸgeldiniz" & vbCrLf & "Kolay Gelsin"), , "http://www.kod.gen.tr"
End Sub
________________________________________
Sub Test()
'Sayfa1.hücreB2:J2 aralığını mesaj kutusunda gösterimi
Dim Email As String, Subj As String
Dim Msg As String, url As String
Dim Vin As String
Dim r As Integer, x As Double
For r = 2 To 2

Email = Cells(r, 1)
' Mesajın Konusu
Subj = "Sayfanızdaki yazılar"

Dim cell As Range
Dim strbody As String
For Each cell In ThisWorkbook.Sheets("Sayfa1").Range("B1:J1")
strbody = strbody & cell.Value & " , "

Dim cell2 As Range
Dim grades As String
For Each cell2 In ThisWorkbook.Sheets("Sayfa1").Range("B2:J2")
grades = grades & cell.Value & " , "

Next
Next
' Mesajı oluştur
Range("A1").Select
Msg = ""
Msg = "Sevgili " & Cells(r, 1) & "," & vbCrLf & vbCrLf _
& "Aşağıda sizin belirttiğiniz aralığa ait yazılar bulunmaktadır." & vbCrLf & vbCrLf _
& strbody & ", " & grades & ", " & Cells(r, 2).Text & ", " _
& Cells(r, 3).Text & ", " & Cells(r, 4).Text & ", " _
& Cells(r, 5).Text & ", " & Cells(r, 6).Text & ", " _
& Cells(r, 7).Text & ", " & Cells(r, 8).Text & ", " _
& Cells(r, 9).Text & ", " & vbCrLf & Cells(r, 10).Text & ", " _
& Cells(r, 11).Text & vbCrLf & "Eric Duchin" & " www.kod.gen.tr"

MsgBox Subj & Chr(13) & Msg
Next
End Sub
________________________________________
Sub test()
'mesaj kutusu 10 saniye sonra çalışır
If Application.Wait(Now + TimeValue("0:00:10")) Then
MsgBox "Zaman Sona Erdi"
End If
End Sub

MsgBox özellikleri

‘cdrom sürücüleri msgboxta gösterir
Function FileOrFolderName(InputString As String, _
    ReturnFileName As Boolean) As String

Dim i As Integer, FolderName As String, FileName As String
    i = 0
    While InStr(i + 1, InputString, Application.PathSeparator) > 0
        i = InStr(i + 1, InputString, Application.PathSeparator)
    Wend
    If i = 0 Then
        FolderName = CurDir
    Else
        FolderName = Left(InputString, i - 1)
    End If
    FileName = Right(InputString, Len(InputString) - i)
    If ReturnFileName Then
        FileOrFolderName = FileName
    Else
        FileOrFolderName = FolderName
    End If
End Function

Sub TestFileOrFolderName()

    MsgBox FileOrFolderName(ThisWorkbook.FullName, False), , _
        "This Workbook Foldername:"
    MsgBox FileOrFolderName(ThisWorkbook.FullName, True), , _
        "This Workbook Filename:"
End Sub

‘Hücre DeÄŸerinin Msgbox ta gösterilmesi
Sub goster()
Dim veri As String
veri = Cells(8, 5).Value '8. satır 5. sütun
MsgBox ("Şu Anda E8 Hücresinde" + vbNewLine + veri _
+ vbNewLine + "DeÄŸeri var")
'vbNewline bir alt satıra indirir.
'chr(13)+chr(10) da yazılabilir
End Sub

‘Ä°kili mesaj kutusu (evet hayır)
Sub Düğme1_Tıklat()

Dim Mesaj As String
Mesaj = MsgBox("www.kod.gen.tr", vbYesNo)
If Mesaj = vbYes Then
    MsgBox ("Evet Düğmesine Tıkladınız"), , "www.kod.gen.tr"
Else
    MsgBox ("Hayır Düğmesini Tıkladınız"), , "www.kod.gen.tr"
End If
End Sub

Mesaj kutularına ikon eklemek
Sub Düğme1_Tıklat()
'İkonlar için kullanılabilecek Seçinekler
'Vbquestion (Soru Ä°konu)
'vbInformation
'VbExclamation (Dikkat Ãœnlem Ä°konu)
'VbCritical (çarpı ikonu Tehlike)
Dim Mesaj As String
Mesaj = MsgBox("www.kod.gen.tr", vbYesNo + vbQuestion)’resimler burada
If Mesaj = vbYes Then
    MsgBox ("Evet Düğmesine Tıkladınız"), , "www.kod.gen.tr"
Else
    MsgBox ("Hayır Düğmesini Tıkladınız"), , "www.kod.gen.tr"
End If
End Sub

Mesaj kutularındaki satırları alt alta yazdırmak
Sub MessageBox3()
' Birdan fazla satırlı msgbox. vbCrLf alt satıra indirir
    Dim strMessage As String
    strMessage = "Kategorilerle Vba Cd'si" & vbCrLf & "www.kod.gen.tr" & vbCrLf & "A.Aşkın KÜÇÜKKAYA"
    MsgBox strMessage
End Sub

Hücre aralıklarını mesaj kutusunda göstermek
Sub Test()
'Sayfa1.hücreB2:J2 aralığını mesaj kutusunda gösterimi
Dim Email As String, Subj As String
Dim Msg As String, url As String
Dim Vin As String
Dim r As Integer, x As Double
For r = 2 To 2

Email = Cells(r, 1)
' Mesajın Konusu
Subj = "Sayfanızdaki yazılar"

Dim cell As Range
Dim strbody As String
For Each cell In ThisWorkbook.Sheets("Sayfa1").Range("B1:J1")
strbody = strbody & cell.Value & " , "

Dim cell2 As Range
Dim grades As String
For Each cell2 In ThisWorkbook.Sheets("Sayfa1").Range("B2:J2")
grades = grades & cell.Value & " , "

Next
Next
' Mesajı oluştur
Range("A1").Select
Msg = ""
Msg = "Sevgili " & Cells(r, 1) & "," & vbCrLf & vbCrLf _
& "Aşağıda sizin belirttiğiniz aralığa ait yazılar bulunmaktadır." & vbCrLf & vbCrLf _
& strbody & ", " & grades & ", " & Cells(r, 2).Text & ", " _
& Cells(r, 3).Text & ", " & Cells(r, 4).Text & ", " _
& Cells(r, 5).Text & ", " & Cells(r, 6).Text & ", " _
& Cells(r, 7).Text & ", " & Cells(r, 8).Text & ", " _
& Cells(r, 9).Text & ", " & vbCrLf & Cells(r, 10).Text & ", " _
& Cells(r, 11).Text & vbCrLf & "Eric Duchin" & " www.kod.gen.tr"

MsgBox Subj & Chr(13) & Msg
Next
End Sub

Belirtilen süre doğrultusunda mesaj kutusu çalışır
Sub test()
'mesaj kutusu 10 saniye sonra çalışır
If Application.Wait(Now + TimeValue("0:00:10")) Then
    MsgBox "Zaman Sona Erdi"
End If
End Sub

Çalışma kitabınız kapatılınca mesaj kutusu açılır
Private Sub Workbook_Deactivate()
‘Kodları ThisWorkbook’a yazınız
'Kapanışta Selam
MsgBox ("Yine Bekleriz" & vbCrLf & "Güle Güle"), , "http://www.kod.gen.tr"
End Sub

Çalışma kitabınız ilk açıldığında mesaj kutusu açılır
Private Sub Workbook_Open()
'açılışta selam
MsgBox ("Merhaba HoÅŸgeldiniz" & vbCrLf & "Kolay Gelsin"), , "http://www.kod.gen.tr"
End Sub
www.kod.gen.tr domaini bizdeyken hazırlamış olduğumuz örnek dosyaların üzerinde bu sitenin ismi yazmaktadır. şu anda yayında olan kod.gen.tr sitesiyle bir bağlantımız veya bağımız bulunmamaktadır.

Excel menü Çubuklarının gizlenmesi, aktif edilmesi

Excel çalışma kitabımızı bazen kişiselliştirmek isteriz. Örneğin çalışma kitabımızın altındaki sayfa isimlerinin olduğu menü çubuğunu 3. kullanıcalırdan gizlemek istediğimizde "ActiveWindow.DisplayWorkbookTabs = False" kodunu kullanmamız işimizi görecektir.

Açılışta menüleri gizleyen kodlar
Sub Auto_open()
    Application.DisplayFullScreen = True
    Application.CommandBars("Full Screen").Visible = False
    Application.CommandBars("Formatting").Visible = False
    Application.CommandBars("Standard").Visible = False
    ActiveWindow.DisplayHeadings = False
    ActiveWindow.DisplayOutline = False
    ActiveWindow.DisplayZeros = False
    ActiveWindow.DisplayHorizontalScrollBar = False
    ActiveWindow.DisplayVerticalScrollBar = False
    ActiveWindow.DisplayWorkbookTabs = False
    Application.DisplayFormulaBar = False
    Application.DisplayStatusBar = False
    ActiveWindow.DisplayHeadings = False 'satır ve sütunu kaldırır
 End Sub
  
 End Sub
Kapanışta menüleri gösteren kodlar

Sub Auto_close()
    Application.DisplayFullScreen = False 'ekranı tam ekran yapar
    Application.CommandBars("Full Screen").Visible = False
    Application.CommandBars("Formatting").Visible = True 'biçimlendirme araç çubuğu
    Application.CommandBars("Standard").Visible = True 'standar araç çubuğu
    Application.DisplayFormulaBar = True
    ActiveWindow.DisplayHeadings = False
    ActiveWindow.DisplayOutline = True
    ActiveWindow.DisplayZeros = False
    ActiveWindow.DisplayHorizontalScrollBar = False
    ActiveWindow.DisplayVerticalScrollBar = False
    ActiveWindow.DisplayWorkbookTabs = False
    Application.DisplayFormulaBar = False 'formul çubuğunu görünür yapar
    Application.DisplayStatusBar = False
    
    
    ActiveWindow.DisplayHeadings = False 'satır ve sütunu kaldırır
 End Sub
excelvbaexcel vba,

Nesne Kütüphanelerinin eklenmesi veya çıkarılması

References iletişim kutusunu kullanarak nesne kütüphanelerini ekleyebilir ve çıkartabilirsiniz.

Nesne kütüphanelerini ekleyerek çalışacak ek nesneler kazanabilirsiniz; görmeniz veya kullanmanız gerekmeyen nesne kütüphanelerini çıkartarak da, VBA’in bir projenin kodunu derlerken çözmesi gereken nesne referansı sayısını azaltabilir ve bu ÅŸekilde daha hızlı çalışmasını saÄŸlayabilirsiniz.


Vba Koduyla Diyalog pencerelerinin çağrılması

Diyalog Pencerelerinden kastımız; klavyemizden ctrl + p ye bastığımız zaman ekrana gelen yazdır penceresi, Biçim menüsünden hücreleri biçimlendir menüsüne tıkladığımızda karşımıza çıkan Hücreleri biçimlendirme penceresidir. Bunlara diyalog penceresi diyoruz.


Microsoft Word'ü sekmeli kullanın!


İnternet tarayıcılar sekmelerle birlikte büyük kullanışlılık kazanmıştı. Şimdi bu özellik Microsoft Word'e de eklenebiliyor.


Yinelemeli Görevler, Döngüler



Yinelemeli Görevler


Sık sık aynı görevi bir öğe grubu için yapmak gerekir. Bu öğeler, bir aralık içindeki hücreler, bir çalışma kitabındaki çalışma sayfaları ya da Uygulama içindeki çalışma kitapları olabilir.

 Makro kaydedici, döngüleri kaydedemesine karşın, yinelenecek ana görevi kaydetmek için kullanılabilir. Böylece, kaydedilen kodda yapılacak küçük bazı deÄŸiÅŸikliklerle, tek başına bir proje için gereksinim duyulanlara baÄŸlı olarak çeÅŸitli tiplerde döngü yaratılabilir.

Aşağıdaki örneklerde; A sütununda içinde sayılar bulunan bir hücre aralığı olduğu ve programcının hücre değerine bağlı olarak, B sütununda buna karşılık gelen hücrenin rengini değiştirmek istediği kabul edilmiştir.

Önce, tek adımlık hücre artalanı renginin değiştirilmesi işlemi kaydedilir:

(Kaydetmek için; Araçlar menüsünden önce Makro'yu sonra Yeni Makro Kaydet'i tıklatın)

Kaydetme sırasında, Biçim menüsünden Hücreler'i tıklatın. Daha sonra, Desenler sekmesini tıklatın ve bir renk seçin. Bu örnekte Sarı kullanılmıştır (.ColorIndex=6). Kaydı Durdur Araç Çubuğu üstündeki Kaydı Durdur düğmesini kullanarak kaydediciyi durdurun.
Şu anda seçili hücrenin rengi değişecek ve aşağıdaki makro kaydedilmiş olacaktır:

Sub Recorded_Macro()

'

' Macro recorded 30.06.97

'

With Selection.Interior

.ColorIndex = 6

.Pattern = xlSolid

End With

End Sub

Not: Kayıt sırasında bir hücre seçerseniz, makronuzda Range("A3").Select ifadesine benzer bir ifade bulunabilir. Bu satır, makro her çalıştırıldığında Range nesnesi içinde belirtilen hücreyi seçeceğinden, satırı silmek isteyebilirsiniz. İlgili hücrenin ilk olarak seçilmesini istiyorsanız, sözkonusu satırı makro içinde bırakın.

Artık, kodu değiştirmeye başlayabilir ve kaydedilen koda çeşitli döngü yapılarından birini ekleyebiliriz.

For Each...Next Döngüsü


Kaydedilen eylemin uygulanacağı hücre aralıkları biliniyorsa, bir For Each…Next döngüsü kullanılabilir.

Bu örnekte, B sütunundaki hücrenin yalnızca A içindeki hücre 20'den büyükse etkilenmesi istenmektedir. Bunu yapmak için, kaydedilen With ifadesini kapsayacak şekilde bir If ifadesi eklenir. Bu, yalnızca If ifadesindeki koşul doğru olduğunda, rengin değiştirilmesini sağlayacaktır.

Son olarak, karşılık gelen hücre A sütununun bir sağındaki sütuna (sütun B) değiştirilmek istendiği için, kayıtlı kod içindeki Seçim özelliği, hücre nesnesini döngüye almanın (cell_in_loop) Yerleştirme yöntemiyle değiştirilir.

Sonuçta ortaya aşağıdakine benzer bir kod çıkar:

 Sub For_Each_Next_Sample()

'

' Macro recorded 30.06.97

'

For Each cell_in_loop In Range("A1:A5")

If cell_in_loop.Value > 20 Then

With cell_in_loop.Offset(0, 1).Interior

.ColorIndex = 6

.Pattern = xlSolid

End With

End If

Next

End Sub

For…Next Döngüsü


Kodun kaç kez döngüye alınacağı biliniyorsa, bir For..Next döngüsü kullanılabilir. Örnek ele alınırsa, seçili hücreden başlayarak aşağıya doğru yalnızca 10 hücreyi denetlemek isterseniz, değiştirilen kaydedilmiş kod şu şekilde görünür:

 Sub For_Next_Sample()

For Counter = 0 To 9
If Selection.Offset(Counter, 0).Value > 20 Then
With Selection.Offset(Counter, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Next
End Sub


Kodun verilen herhangi bir aralığa özel olmaması ve her zaman etkin hücrenin altındaki on (sayaç olarak 0-9 arasındaki sayılar) hücre içinde döngüde olması için, burada Seçim nesnesi kullanılmıştır. Sayaç bağımsız değişkeni, döngü içinde her defasında bir artar ve döngü yapısı içinde kullanılabilir. Burada, Seçim'den (geçerli hücreden) itibaren kaç satır yerleştirileceğini gösteren bir Yerleştirme bağımsız değişkeni olarak kullanılmaktadır. Sonuçta, bu makro başlatılır ve etkin hücre A1 olursa, Sayaç bağımsız değişkeninin döngüdeki ilk değeri 0 olacaktır, bu nedenle Selection.Offset(Counter, 0).Value ifadesinde gösterildiği gibi A1'den itibaren 0 satır yerleştirilecektir.

Do…Loop Döngüsü

Özel bir koÅŸul kullanılan döngüyü durdurup durdurmamaya karar vermek için, bir Do…Loop kullanımı uygun olabilir. Bu döngü yapısı, döngü yürütülmeden önce özellikleri ve bağımsız deÄŸiÅŸken koÅŸullarını denetlemenize izin verir. AÅŸağıdaki örnekte, baÅŸvurulan hücrenin satır numarası, Selection.Offset(Counter, 0).Row, 100 deÄŸerini aÅŸana kadar döngü yürütülmeye devam ediyor. Bu, döngü görevi 100.satırın altında daha önce hiç yapılmamışsa faydalı olabilir.
 Sub Do_Loop_Sample() Counter = 0
Do Until Selection.Offset(Counter, 0).Row > 100
If Selection.Offset(Counter, 0).Value > 20 Then
With Selection.Offset(Counter, 1).Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End If
Counter = Counter + 1
Loop
  Not: Üç tane daha kullanılan Do…Loop döngüsü vardır. ÇeÅŸitli formlar, deÄŸiÅŸik durumlarda daha fazla esneklik saÄŸlar.

Bunlar hakkında daha fazla bilgi ve diğer döngü yapıları hakkında daha fazla ayrıntı edinmek için, lütfen Visual Basic Ortamı içindeki Yardım'a giderek, döngüye alma anahtar sözcüğünü kullanarak arama yapın.

DeÄŸiÅŸkenler ve veri tipleri



DEĞİŞKENLER ve VERİ TİPLERİ

Bir programlama dilinin en önemli öğelerinden biride değişkenler ve bu değişkenlerin veri tiplerdir.

Mesela; Bir iÅŸte çalışıyorsunuz. Patronunuz sizi iÅŸe alırken bazı sorular sormuÅŸtur, en azından CV hazırlamışsınızdır. CV’nizdeki maaÅŸ konusunu ele alacak olursak, 1.250 birim maaÅŸ talebi olmuÅŸ olsun, ÅŸirketin finansmanından 1.250 birim YTL ayrılacak demektir. Yani iÅŸe alınacak kiÅŸi Erdal ÇATAL ise ve maaşı 1.250 birim ise; Erdal ÇATAL muhasebe elamanıdır ve 1.250 birim maaşı vardır gibi bir tanım yapmanız ÅŸirketiniz açısından faydalı olacaktır. Nasıl iÅŸe alınan bir elemanın maaşı belirlenmeli ise Visual Basic’ programına da aynı ÅŸekilde Visual Basic’ in tanımadığı bir sözcüğü (deÄŸiÅŸken) tanımlamanız gereklidir, ancak zorunluluk yoktur.


    Visual Basic ya da Visual Basic Application kullanılarak yazılan bir kod için deÄŸiÅŸken tanımlama zorunluluÄŸu yoktur. DeÄŸiÅŸken tanımlaması programınızın hızı açısından önem arz etmektedir. Visual Basic Application tanımlanan deÄŸiÅŸkenler için hafızadan gerektiÄŸi kadar yer ayırır. Tanımlanmayan veya boyut bildirilmeyen deÄŸiÅŸkenler hafızanın ÅŸiÅŸmesine sebep olacaktır, çünkü tanımlanmayan deÄŸiÅŸkenler hafızayı fazlası ile yorarlar. Bu yorgunluk büyük projelerde kendini hissettirecektir.



VBA'da değişken tanımlanırken genelde Dim deyimi kullanılır.

Dim DeÄŸiÅŸken_Adi As Tipi [Dim: Boyut (Dimenson)]

DEĞİŞKEN TİPLERİ (VARİABLES)


Değişken Tipi Değişken Türü Byte

  •     Byte Sayısal 1
  •     Integer Sayısal 2
  •     Long Sayısal 4
  •     Single Sayısal, Ondalık 4
  •     Double Sayısal, Ondalık 8
  •     Currency Sayısal Para 8
  •     Date Tarih 8
  •     String Metin 10
  •     Boolean Mantıksal 2
  •     Object Nesne 4
  •     Variant Belirsiz 16 , +1 bayt her karakter için



Süleyman Uzunköprü

öğrenci notları hesaplama


şeklinde öğrenci notlarını gösterem bir tablomuz olsun
Yapacağımız işlemleri liste halinde yazalım
  • 1- Endüşük Not
  • 2- Endüşük Not hangi öğrenciye ait
  • 3- Endüşük notu alan öğrenciyi ve aldığı notu rakamla ve yazıyla  birleÅŸtir formülünü  kullanarak metnin içine otomatik yazdırmak