Мы можем иметь события рабочей книги (например, открытие, закрытие и т.д.), которые могут быть триггерами (переключателями) для VBA кода.
Чтобы выполнить инструкции, когда открывается рабочая книга, идем к ThisWorkbook и выбираем Workbook :
Событие Workbook_Open будет добавлено по умолчанию и будет действовать во время открытия книги:
Private Sub Workbook_Open () End Sub
Например, если мы добавим следующую инструкцию, тогда диалоговое окно будет отображено при открытии книги:
Private Sub Workbook_Open() MsgBox "Welcome" End Sub
Чтобы выполнить инструкции перед самым закрытием книги, выберите 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
Это событие возникает сразу перед самым сохранением рабочей книги:
Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, Cancel As Boolean) End Sub
Сохранение файла может быть отменено присвоением значения True к переменной "Cancel".
Это событие возникает перед самой печатью рабочей книги:
Private Sub Workbook_BeforePrint (Cancel As Boolean) End Sub
Печать файла может быть отменена присвоением значения True к переменной "Cancel".
Это событие возникает сразу после сохранением рабочей книги:
Private Sub Workbook_AfterSave (ByVal Success As Boolean) 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_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
Это событие возникает перед самым кликом правой кнопки мыши
Private Sub Workbook_SheetBeforeRightClick (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub
Это событие возникает каждый раз, когда меняется содержание рабочего листа
Private Sub Workbook_SheetChange (ByVal Sh As Object, ByVal Target As Range) End Sub
Это событие возникает каждый раз, когда рассчитываются или пересчитываются данные на рабочем листе:
Private Sub Workbook_SheetCalculate(ByVal Sh As Object) 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) 'Blue color End If End Sub
Это событие возникает каждый раз, когда добавляется новый лист в рабочую книгу:
Private Sub Workbook_NewSheet(ByVal Sh As Object) End Sub
Это событие возникает при нажатии на ссылку (гипертекст):
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target As Hyperlink) End Sub