VBA-Урок 11.1. Події робочої книги (Workbook Events)

Ми можемо мати події робочої книги (наприклад, відкриття, закриття і т.д.), які можуть бути тригерами (перемикачами) для VBA коду.

Workbook_Open (Відкриття книги)

Щоби виконати інструкції, коли відкривається робоча книга, йдемо до ThisWorkbook і вибираємо Workbook:

Подія Workbook_Open буде додана по замовчуванню і діятиме під час відкриття книги:

Private Sub Workbook_Open()

End Sub

Наприклад, якщо ми добавимо наступну інструкцію, тоді діалогове вікно буде відображене під час відкриття книги:

Private Sub Workbook_Open()
     MsgBox "Welcome"
End Sub

Workbook_BeforeClose (Подія перед закриттям книги)

Щоби виконати інструкції перед самим закриттям книги, виберіть BeforeClose:

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub

Закриття книги може бути відмінене, якщо присвоїти значення True до змінної "Cancel".

Нижче наведений приклад, в якому користувача запитують підтвердження на закриття робочої книги:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
     'Якщо користувач відповідає NO, то змінна Cancel матиме значення TRUE (яке відмінить закриття робочої книги)
     If MsgBox("Ви дійсно хочете закрити цю книгу ?", 36, "Підтверджую") = vbNo Then
         Cancel = True
     End If
End Sub

Workbook_BeforeSave (Подія перед збереженням книги)

Ця подія виникає відразу перед самим збереженням робочої книги:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

Збереження файлу може бути відмінено присвоєнням значення True до змінної "Cancel".

Workbook_BeforePrint (Подія перед друком книги)

Ця подія виникає перед самим друком робочої книги:

Private Sub Workbook_BeforePrint(Cancel As Boolean)

End Sub

Друк файлу може бути відмінений присвоєнням значення True до змінної "Cancel".

Workbook_AfterSave (Подія після збереженням книги)

Ця подія виникає відразу після збереженням робочої книги:

Private Sub Workbook_AfterSave(ByVal Success As Boolean)

End Sub

Workbook_SheetActivate (Подія переключення робочого аркуша)

Ця подія виникає кожного разу, коли ви переключаєтесь між аркушами робочої книги:

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

Workbook_SheetBeforeDoubleClick (Подія подвійного клацання по комірці)

Ця подія виникає при подвійному клацанні на комірці робочого листа:

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) 'Orange color
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'Green color
     End If
End Sub

Workbook_SheetBeforeRightClick (Подія перед правим кліком)

Ця подія виникає перед самим кліком правою кнопки миші:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

End Sub

Workbook_SheetChange (Подія зміни вмісту аркуша)

Ця подія виникає кожного разу, коли змінюється вміст робочого аркуша:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub

Workbook_SheetCalculate (Подія перерахунку аркуша)

Ця подія виникає кожного разу, коли обраховуються або перераховуються дані на робочому аркуші:

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)

End Sub

Workbook_SheetSelectionChange (Подія зміни вибраного діапазону комірок)

Ця подія виникає кожного разу, коли змінюється вміст вибраного діапазону комірок на розрахунковому аркуші:

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) 'Blue color
    End If
End Sub

Workbook_NewSheet (Подія додавання нового аркуша)

Ця подія виникає кожного разу, коли додається новий аркуш до робочої книги:

Private Sub Workbook_NewSheet(ByVal Sh As Object)

End Sub

Workbook_SheetFollowHyperlink (Подія натиснення на посилання)

Ця подія виникає під час натиснення на посилання (гіпертекст):

Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)

End Sub

Статті по темі:

  • VBA-Урок 10. Діалогові вікна (Dialog boxes)
  • VBA-Урок 11.2. Події робочого аркуша (Worksheet Events)