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 ("Вы действительно хотите закрыть эту книгу?", 36, "Подтверждаю") = 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) 'Orange color  
  4.      Else  
  5.          Target.Interior.Color = RGB(136, 255, 0) 'Green color  
  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) 'Blue color  
  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