Putem avea evenimente din registrul de lucru (cum ar fi deschiderea, închiderea etc.) care pot fi declanșatoare (comutatoare) pentru codul VBA.
Pentru a urma instrucțiunile când se deschide registrul de lucru, accesați ThisWorkbook și selectați Workbook:
Evenimentul Workbook_Open va fi adăugat în mod implicit și se va declanșa când registrul de lucru este deschis:
Private Sub Workbook_Open() End Sub
De exemplu, dacă adăugăm următoarea instrucțiune, atunci când se deschide registrul de lucru va fi afișată caseta de dialog:
Private Sub Workbook_Open() MsgBox "Welcome" End Sub
Pentru a executa instrucțiunile înainte de a închide registrul de lucru, selectați BeforeClose:
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
Închiderea unui registru de lucru poate fi anulată setând variabila „Cancel” la True.
Următorul este un exemplu în care utilizatorului i se cere confirmarea pentru închiderea registrului de lucru:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Dacă utilizatorul răspunde cu NO, atunci variabila Cancel va avea valoarea TRUE (care va anula închiderea registrului de lucru) If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then Cancel = True End If End Sub
Acest eveniment are loc imediat înainte ca registrul de lucru să fie salvat:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Salvarea unui fișier poate fi anulată setând variabila „Cancel” la True.
Acest eveniment are loc înainte ca registrul de lucru să fie tipărit:
Private Sub Workbook_BeforePrint(Cancel As Boolean) End Sub
Imprimarea fișierului poate fi anulată setând variabila „Cancel” la True.
Acest eveniment are loc imediat după salvarea registrului de lucru:
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
Acest eveniment are loc de fiecare dată când comutați între foile de lucru dintr-un registru de lucru:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) End Sub
În acest exemplu, numele foii active este afișat în caseta de dialog:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "Name of Sheet : " & Sh.Name End Sub
Acest eveniment are loc atunci când se face dublu clic pe o celulă de foaie de lucru:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
De exemplu, putem folosi acest eveniment pentru a adăuga o culoare de umplere la o celulă, în funcție de foaia selectată:
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) 'Portocale Else Target.Interior.Color = RGB(136, 255, 0) 'Verde End If End Sub
Acest eveniment are loc înainte de clic dreapta al mouse-ului:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Acest eveniment are loc ori de câte ori conținutul foii de lucru se modifică:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub
Acest eveniment are loc ori de câte ori datele dintr-o foaie de lucru sunt calculate sau recalculate:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) End Sub
Acest eveniment are loc ori de câte ori conținutul intervalului de celule selectat din foaia de calcul se modifică:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) End Sub
În acest exemplu, culoarea de umplere se schimbă dacă celula A1 este goală:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1") = "" Then Target.Interior.Color = RGB(124, 255, 255) 'Albastru End If End Sub
Acest eveniment are loc ori de câte ori o nouă foaie este adăugată la registrul de lucru:
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
Acest eveniment are loc atunci când se face clic pe un link (hipertext):
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) End Sub