Na poprzedniej lekcji rozważaliśmy wydarzenia związane z całą książką. Teraz skupimy się na zdarzeniach związanych z pojedynczym arkuszem.
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
To zdarzenie ma miejsce, gdy arkusz jest aktywowany:
Private Sub Worksheet_Activate() End Sub
To zdarzenie ma miejsce, gdy aktywowany jest inny arkusz:
Private Sub Worksheet_Deactivate() End Sub
To zdarzenie występuje po dwukrotnym kliknięciu komórki arkusza:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) End Sub
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
To zdarzenie występuje za każdym razem, gdy dane w arkuszu są obliczane lub ponownie obliczane:
Private Sub Worksheet_Calculate() End Sub
Zdarzenie to ma miejsce zawsze, gdy zmienia się zawartość komórek danego arkusza:
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
To zdarzenie ma miejsce po kliknięciu łącza (hipertekstu):
Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) End Sub
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