Ми можемо мати події робочої книги (наприклад, відкриття, закриття і т.д.), які можуть бути тригерами (перемикачами) для VBA коду.
Щоби виконати інструкції, коли відкривається робоча книга, йдемо до ThisWorkbook і вибираємо Workbook:
Подія Workbook_Open буде додана по замовчуванню і діятиме під час відкриття книги:
Private Sub Workbook_Open() End Sub
Наприклад, якщо ми добавимо наступну інструкцію, тоді діалогове вікно буде відображене під час відкриття книги:
Private Sub Workbook_Open() MsgBox "Welcome" End Sub
Щоби виконати інструкції перед самим закриттям книги, виберіть BeforeClose:
Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub
Закриття книги може бути відмінене, якщо присвоїти значення True до змінної "Cancel".
Нижче наведений приклад, в якому користувача запитують підтвердження на закриття робочої книги:
Private Sub Workbook_BeforeClose(Cancel As Boolean) 'Якщо користувач відповідає NO, то змінна Cancel матиме значення TRUE (яке відмінить закриття робочої книги) If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then Cancel = True End If End Sub
Ця подія виникає відразу перед самим збереженням робочої книги:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Збереження файлу може бути відмінено присвоєнням значення True до змінної "Cancel".
Ця подія виникає перед самим друком робочої книги:
Private Sub Workbook_BeforePrint(Cancel As Boolean) End Sub
Друк файлу може бути відмінений присвоєнням значення True до змінної "Cancel".
Ця подія виникає відразу після збереженням робочої книги:
Private Sub Workbook_AfterSave(ByVal Success As Boolean) End Sub
Ця подія виникає кожного разу, коли ви переключаєтесь між аркушами робочої книги:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) End Sub
У цьому прикладі, назва активованого аркуша відображається в діалоговому вікні:
Private Sub Workbook_SheetActivate(ByVal Sh As Object) MsgBox "Name of Sheet : " & Sh.Name End Sub
Ця подія виникає при подвійному клацанні на комірці робочого листа:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Наприклад, ми можемо використати цю подію, щоби додати колір заливки комірки, в залежності від вибраного аркуша:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) If Sh.Name = "Sheet1" Then Target.Interior.Color = RGB(255, 108, 0) 'Оранжевий колір Else Target.Interior.Color = RGB(136, 255, 0) 'Зелений колір End If End Sub
Ця подія виникає перед самим кліком правою кнопки миші:
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Ця подія виникає кожного разу, коли змінюється вміст робочого аркуша:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) End Sub
Ця подія виникає кожного разу, коли обраховуються або перераховуються дані на робочому аркуші:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) End Sub
Ця подія виникає кожного разу, коли змінюється вміст вибраного діапазону комірок на розрахунковому аркуші:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) End Sub
У цьому прикладі, змінюється колір заливки, якщо комірка А1 порожня:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If Range("A1") = "" Then Target.Interior.Color = RGB(124, 255, 255) 'Синій колір End If End Sub
Ця подія виникає кожного разу, коли додається новий аркуш до робочої книги:
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
Ця подія виникає під час натиснення на посилання (гіпертекст):
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) End Sub