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