TOP

VBA-Lekcja 11.2. Zdarzenia arkusza (Worksheet zdarzenia)

Na poprzedniej lekcji rozważaliśmy wydarzenia związane z całą książką. Teraz skupimy się na zdarzeniach związanych z pojedynczym arkuszem.


Worksheet_SelectionChange (Otwieranie skoroszytu)

Aby wykonać instrukcje oparte na zdarzeniach dla pojedynczego arkusza, wybierz arkusz w edytorze, a następnie Worksheet:

Domyślnie zostanie dodane zdarzenie SelectionChange. To zdarzenie jest wywoływane za każdym razem, gdy zmienia się zawartość zakresu:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub

Na przykład poniższy kod dodaje kolory wypełnienia do jednej lub większej liczby wybranych komórek i automatycznie usuwa kolor wypełnienia z wcześniej wybranego zakresu, gdy zakres ten ulegnie zmianie:

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

     If previous_selection <> "" Then
         'Usuwanie koloru tła z poprzedniego zaznaczenia:
         Range(previous_selection).Interior.ColorIndex = xlColorIndexNone
     End If

     'Dodawanie koloru tła do bieżącego zaznaczenia:
     Target.Interior.Color = RGB(181, 244, 0)

     'Zapisywanie adresu bieżącego wyboru:
     previous_selection = Target.Address
End Sub

Worksheet_Activate (zdarzenie aktywacji arkusza)

To zdarzenie ma miejsce, gdy arkusz jest aktywowany:

Private Sub Worksheet_Activate()

End Sub

Worksheet_Deactivate (Zdarzenie dezaktywacji arkusza)

To zdarzenie ma miejsce, gdy aktywowany jest inny arkusz:

Private Sub Worksheet_Deactivate()

End Sub

Worksheet_BeforeDoubleClick (zdarzenie dwukrotnego kliknięcia komórki)

To zdarzenie występuje po dwukrotnym kliknięciu komórki arkusza:

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

End Sub

Worksheet_BeforeRightClick (Zdarzenie przed kliknięciem prawym przyciskiem myszy)

To zdarzenie ma miejsce przed kliknięciem prawym przyciskiem myszy na arkuszu:

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

End Sub

Worksheet_Calculate (zdarzenie obliczania arkusza)

To zdarzenie występuje za każdym razem, gdy dane w arkuszu są obliczane lub ponownie obliczane:

Private Sub Worksheet_Calculate()

End Sub

Worksheet_Change (zdarzenie zmiany zawartości komórki)

Zdarzenie to ma miejsce zawsze, gdy zmienia się zawartość komórek danego arkusza:

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub

Worksheet_FollowHyperlink (zdarzenie kliknięcia łącza)

To zdarzenie ma miejsce po kliknięciu łącza (hipertekstu):

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)

End Sub

Tymczasowo dezaktywuj wszystkie zdarzenia

Aby wykonać kod bez żadnych zdarzeń, wstaw go pomiędzy dwie linie kodu w następujący sposób:

 Application.EnableEvents = False '=> wyłącz zdarzenia
 'Niektóre instrukcje...
 Application.EnableEvents = True '=> ponownie włącz zdarzenia