TOP
VBA-Урок 11.1. Події робочої книги (Workbook Events)
Ми можемо мати події робочої книги (наприклад, відкриття, закриття і т.д.), які можуть бути тригерами (перемикачами) для VBA коду.
Workbook_Open (Відкриття книги)
Щоби виконати інструкції, коли відкривається робоча книга, йдемо до ThisWorkbook і вибираємо Workbook:
Подія Workbook_Open буде додана по замовчуванню і діятиме під час відкриття книги:
- Private Sub Workbook_Open()
-
- End Sub
Private Sub Workbook_Open()
End Sub
Наприклад, якщо ми добавимо наступну інструкцію, тоді діалогове вікно буде відображене під час відкриття книги:
- Private Sub Workbook_Open()
- MsgBox "Welcome"
- End Sub
Private Sub Workbook_Open()
MsgBox "Welcome"
End Sub
Workbook_BeforeClose (Подія перед закриттям книги)
Щоби виконати інструкції перед самим закриттям книги, виберіть BeforeClose:
- Private Sub Workbook_BeforeClose(Cancel As Boolean)
-
- End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub
Закриття книги може бути відмінене, якщо присвоїти значення True до змінної "Cancel".
Нижче наведений приклад, в якому користувача запитують підтвердження на закриття робочої книги:
- Private Sub Workbook_BeforeClose(Cancel As Boolean)
-
- If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then
- Cancel = True
- End If
- End Sub
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
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
Private Sub Workbook_BeforePrint(Cancel As Boolean)
End Sub
Друк файлу може бути відмінений присвоєнням значення True до змінної "Cancel".
Workbook_AfterSave (Подія після збереженням книги)
Ця подія виникає відразу після збереженням робочої книги:
- Private Sub Workbook_AfterSave(ByVal Success As Boolean)
-
- End Sub
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)
End Sub
У цьому прикладі, назва активованого аркуша відображається в діалоговому вікні:
- Private Sub Workbook_SheetActivate(ByVal Sh As Object)
- MsgBox "Name of Sheet : " & Sh.Name
- 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)
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_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
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
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
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
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_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
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
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink)
End Sub