ВГОРУ

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("Do you really want to close this workbook ?", 36, "I confirm") = 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) 'Оранжевий колір
     Else
         Target.Interior.Color = RGB(136, 255, 0) 'Зелений колір
     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) 'Синій колір
    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