TOP

VBA-Lecția 11.1. Evenimente din registru de lucru (Workbook Evenimente)

Putem avea evenimente din registrul de lucru (cum ar fi deschiderea, închiderea etc.) care pot fi declanșatoare (comutatoare) pentru codul VBA.


Workbook_Open (Deschiderea cărții)

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

Workbook_BeforeClose (Eveniment înainte de închiderea registrului de lucru)

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

Workbook_BeforeSave (Eveniment înainte de salvarea registrului de lucru)

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.

Workbook_BeforePrint (Eveniment înainte de tipărirea cărții)

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.

Workbook_AfterSave (Eveniment după salvarea registrului de lucru)

Acest eveniment are loc imediat după salvarea registrului de lucru:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (Eveniment de schimbare a foii de lucru)

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

Workbook_SheetBeforeDoubleClick (Eveniment de dublu clic pe o celulă)

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

Workbook_SheetBeforeRightClick (Eveniment înainte de a face clic dreapta)

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

Workbook_SheetChange (eveniment de modificare a conținutului foii)

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

Workbook_SheetCalculate (Eveniment SheetCalculate)

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

Workbook_SheetSelectionChange (eveniment de modificare a intervalului de celule selectat)

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

Workbook_NewSheet (Adăugați un nou eveniment de foaie)

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

Workbook_SheetFollowHyperlink (Eveniment clic pe link)

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