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.