TOP

VBA-Lecția 11.2. Evenimente din foaia de lucru (Worksheet Evenimente)

În lecția anterioară, am luat în considerare evenimentele legate de întreaga carte. Acum ne vom concentra asupra evenimentelor legate de o singură foaie.


Worksheet_SelectionChange (Deschiderea registrului de lucru)

Pentru a executa instrucțiuni bazate pe evenimente pentru o foaie de lucru individuală, selectați foaia de lucru în editor, apoi Worksheet:

Evenimentul SelectionChange va fi adăugat în mod implicit. Acest eveniment este declanșat ori de câte ori conținutul intervalului se modifică:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

De exemplu, următorul cod adaugă culori de umplere la una sau mai multe celule selectate și elimină automat culoarea de umplere din intervalul selectat anterior atunci când intervalul respectiv se schimbă:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
     Static previous_selection As String

     If previous_selection <> "" Then
         'Eliminarea culorii de fundal din selecția anterioară:
         Range(previous_selection).Interior.ColorIndex = xlColorIndexNone
     End If

     'Adăugarea culorii de fundal la selecția curentă:
     Target.Interior.Color = RGB(181, 244, 0)

     'Salvarea adresei selecției curente:
     previous_selection = Target.Address
End Sub

Worksheet_Activate (eveniment de activare a foii)

Acest eveniment are loc atunci când o foaie de lucru este activată:

Private Sub Worksheet_Activate()

End Sub

Worksheet_Deactivate (Eveniment de dezactivare a foii)

Acest eveniment are loc atunci când este activată o altă foaie de lucru:

Private Sub Worksheet_Deactivate()

End Sub

Worksheet_BeforeDoubleClick (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 Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Worksheet_BeforeRightClick (Eveniment înainte de clic dreapta)

Acest eveniment are loc înainte de a face clic dreapta pe foaia de lucru:

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

End Sub

Worksheet_Calculate (Eveniment de calcul al foii de lucru)

Acest eveniment are loc ori de câte ori datele dintr-o foaie de lucru sunt calculate sau recalculate:

Private Sub Worksheet_Calculate()

End Sub

Worksheet_Change (Eveniment de modificare a conținutului celulei)

Acest eveniment are loc ori de câte ori conținutul celulelor de pe foaia dată se schimbă:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Worksheet_FollowHyperlink (Eveniment clic pe link)

Acest eveniment are loc atunci când se face clic pe un link (hipertext):

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

End Sub

Dezactivați temporar toate evenimentele

Pentru a executa codul fără niciun eveniment, inserați-l între două linii de cod astfel:

 Application.EnableEvents = False '=> dezactivați evenimente
 'Cateva instructiuni...
 Application.EnableEvents = True '=> reactivați evenimentele