VBA kodu için tetikleyici (anahtar) olabilecek çalışma kitabı olaylarımıza (açma, kapatma vb.) sahip olabiliriz.
Çalışma kitabı açıldığında talimatları takip etmek için ThisWorkbook'a gidin ve Workbook'ı seçin:
Workbook_Open olayı varsayılan olarak eklenecek ve çalışma kitabı açıldığında etkinleşecektir:
Private Sub Workbook_Open() End Sub
Örneğin aşağıdaki talimatı eklersek çalışma kitabı açıldığında iletişim kutusu görüntülenecektir:
Private Sub Workbook_Open() MsgBox "Welcome" End Sub
Çalışma kitabını kapatmadan önce talimatları yürütmek için Kapatmadan Önce'yi seçin:
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
Bir çalışma kitabının kapatılması, "Cancel" değişkeninin True olarak ayarlanmasıyla iptal edilebilir.
Aşağıda, kullanıcıdan çalışma kitabını kapatma onayının istendiği bir örnek verilmiştir:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Kullanıcı NO ile yanıt verirse, Cancel değişkeni TRUE değerine sahip olacaktır (bu, çalışma kitabının kapatılmasını iptal edecektir) If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then Cancel = True End If End Sub
Bu olay, çalışma kitabı kaydedilmeden hemen önce gerçekleşir:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Bir dosyanın kaydedilmesi, "Cancel" değişkeninin True olarak ayarlanmasıyla iptal edilebilir.
Bu olay, çalışma kitabı yazdırılmadan önce gerçekleşir:
Private Sub Workbook_BeforePrint(Cancel As Boolean) End Sub
Dosyanın yazdırılması, "Cancel" değişkeninin True olarak ayarlanmasıyla iptal edilebilir.
Bu olay çalışma kitabını kaydettikten hemen sonra gerçekleşir:
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
Bu olay, bir çalışma kitabındaki çalışma sayfaları arasında her geçiş yaptığınızda gerçekleşir:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) End Sub
Bu örnekte, etkin sayfanın adı iletişim kutusunda görüntülenir:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "Name of Sheet : " & Sh.Name End Sub
Bu olay, bir çalışma sayfası hücresine çift tıklandığında meydana gelir:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Örneğin, seçilen sayfaya bağlı olarak bir hücreye dolgu rengi eklemek için bu olayı kullanabiliriz:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Sheet1" Then Target.Interior.Color = RGB(255, 108, 0) 'Turuncu Else Target.Interior.Color = RGB(136, 255, 0) 'Yeşil End If End Sub
Bu olay, sağ fare tıklamasından önce gerçekleşir:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Bu olay, çalışma sayfasının içeriği her değiştiğinde gerçekleşir:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub
Bu olay, çalışma sayfasındaki veriler her hesaplandığında veya yeniden hesaplandığında meydana gelir:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) End Sub
Bu olay, e-tabloda seçilen hücre aralığının içeriği değiştiğinde meydana gelir:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) End Sub
Bu örnekte A1 hücresi boşsa dolgu rengi değişir:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1") = "" Then Target.Interior.Color = RGB(124, 255, 255) 'Mavi End If End Sub
Bu olay, çalışma kitabına yeni bir sayfa eklendiğinde gerçekleşir:
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
Bu olay, bir bağlantıya (köprü metni) tıklandığında meydana gelir:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) End Sub