TOP

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

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


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

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

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

  1. Private Sub Workbook_Open()  
  2.   
  3. End Sub  

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

  1. Private Sub Workbook_Open()  
  2.      MsgBox "Welcome"  
  3. End Sub  

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

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

  1. Private Sub Workbook_BeforeClose(Cancel As Boolean)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Workbook_BeforeClose(Cancel As Boolean)  
  2.      'Якщо користувач відповідає NO, то змінна Cancel матиме значення TRUE (яке відмінить закриття робочої книги)  
  3.      If MsgBox("Do you really want to close this workbook ?", 36, "I confirm") = vbNo Then  
  4.          Cancel = True  
  5.      End If  
  6. End Sub  

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

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

  1. Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)  
  2.   
  3. End Sub  

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

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

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

  1. Private Sub Workbook_BeforePrint(Cancel As Boolean)  
  2.   
  3. End Sub  

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

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

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

  1. Private Sub Workbook_AfterSave(ByVal Success As Boolean)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Workbook_SheetActivate(ByVal Sh As Object)  
  2.   
  3. End Sub  

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

  1. Private Sub Workbook_SheetActivate(ByVal Sh As Object)  
  2.      MsgBox "Name of Sheet : " & Sh.Name  
  3. End Sub  

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

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

  1. Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As ObjectByVal Target As Range, Cancel As Boolean)  
  2.   
  3. End Sub  

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

  1. Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As ObjectByVal Target As Range, Cancel As Boolean)  
  2.      If Sh.Name = "Sheet1" Then  
  3.          Target.Interior.Color = RGB(255, 108, 0) 'Оранжевий колір  
  4.      Else  
  5.          Target.Interior.Color = RGB(136, 255, 0) 'Зелений колір  
  6.      End If  
  7. End Sub  

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

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

  1. Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As ObjectByVal Target As Range, Cancel As Boolean)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Workbook_SheetChange(ByVal Sh As ObjectByVal Target As Range)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Workbook_SheetCalculate(ByVal Sh As Object)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)  
  2.   
  3. End Sub  

У цьому прикладі, змінюється колір заливки, якщо комірка А1 порожня:

  1. Private Sub Workbook_SheetSelectionChange(ByVal Sh As ObjectByVal Target As Range)  
  2.      If Range("A1") = "" Then  
  3.          Target.Interior.Color = RGB(124, 255, 255) 'Синій колір  
  4.     End If  
  5. End Sub  

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

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

  1. Private Sub Workbook_NewSheet(ByVal Sh As Object)  
  2.   
  3. End Sub  

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

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

  1. Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As ObjectByVal Target As Hyperlink)  
  2.   
  3. End Sub