Zdarzenia Arkusza (WorkSheet)

W edytorze VBA w oknie Project Explorer (lewy górny róg ekranu) widzimy, że mamy drzewko przedstawiające różne gałęzie. Na poniższym rysunku widzimy, że rozwinąłem gałąź o nazwie VBAProject (Zeszyt1) (plik, który edytuję to Zeszyt1) a w nim mam podgałąź Arkusz1 (tych podgałęzi jest tyle ile mam utworzony arkuszy w skoroszycie + dodatkowa gałąź „dla całego skoroszytu”).

Klikając dwukrotnie np. w Arkusz1 otworzy się nowy moduł dla arkusza o nazwie Arkusz1. Mogę tam definiować różne procedury dotyczące arkusza o nazwie Arkusz1. Np. mogę napisać prosty kawałek kodu, który się wykona gdy użytkownik zmieni zawartość danej komórki. Oczywiście jeśli użytkownik dokona zmiany w arkuszu o nazwie Arkusz2 to owy kawałek kodu się nie wykona, gdyż on się tyczy tylko arkusza o nazwie Arkusz1.

Poniżej wyjaśniam najpopularniejsze zdarzenia:

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
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

Wróć do spisu treści