Zdarzenia arkusza

Do tej pory tworzyliśmy proste procedury, które należało ręcznie uruchamiać. Niektóre procedury uruchamiają się automatycznie, gdy nastąpi jakieś zdarzenie (np. użytkownik otworzy skoroszyt). Poniżej wymieniłem kilka najpopularniejszych zdarzeń arkusza.

Activate – arkusz został aktywowany (np. przełączyliśmy się z Arkusza2 na Arkusz1 – wtedy jest aktywowany Arkusz1)

Private Sub Worksheet_Activate()
    MsgBox "Dane w tym arkuszu można edytować tylko za zgodą szefa"
End Sub

Deactivate – arkusz został deaktywowany (czyli przełączyłem się z Arkusza1 na np. Arkusz2)

Private Sub Worksheet_Deactivate()
    MsgBox "Zostałem deaktywowany"
End Sub

Calculate – arkusz został przeliczony (np. ktoś wpisał jakąś liczbę do jakiejś komórki i jakaś formuła, która z tej komórki odczytała liczbę dokonała przeliczenia)

Change(ByVal Target As Range) – nastapiła zmiana jakiejś komórki (np. użytkownik coś wpisał) argumentem jest zakres w którym wystąpiły zmiany

BeforeRightClick – zdarzenie wykona się tuż przed tym jak użytkownik kliknie w arkuszu prawym przyciskiem myszy

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
    MsgBox "Zablokowałem prawy przycisk myszy"
    Cancel = True 'Blokada menu użytkownika
End Sub

BeforeDoubleClick – zdarzenie wykona się tuż przed tym jak użytkownik kliknie dwukrotnie w arkuszu

BeforeDelete – zdarzenie wykona się tuż przed tym jak ma zostać usunięty arkusz (przydatne, aby przed usunięciem arkusza zarchiwizować jakieś dane)

FollowHyperlink – zdarzenie jest wykonane, gdy użytkownik kliknie w link (hiperłącze) w arkuszu

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
    MsgBox Target.Address
End Sub

SelectionChange – zdarzenie jest wykonywane, gdy użytkownik zaznaczy jakiś obszar w arkuszu

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    For Each Kom In Target
        Kom.Value = "ocenzurowano"
    Next
End Sub