Шаг 51 - Изучаем события Excel Workbook

Открытие книги:

Private Sub Workbook_Open()
End Sub

Активация окна. Вызывается в момент активации книги. Этот момент наступает в тот момент, когда из другой активной книги вы переходите к той, в которой обрабатывается событие. Например, при переключении книги в меню "Окно".

Private Sub Workbook_Activate()
End Sub

Закрытие окна. Вызывается перед закрытием книги:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
End Sub

Деактивация книги. Вызывается в момент перехода к другой книге:

Private Sub Workbook_Deactivate()
End Sub

Активация листа. Вызывается в момент смены листа:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
End Sub

Деактивация листа. Вызывается в момент смены листа для того листа, с которого уходят:

Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
End Sub

Смена ячейки. Вызывается в момент смены диапазона или при редактировании ячейки:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Excel.Range)
End Sub

Пересчет данных. Вызываться при пересчете данных, обычно пересчет связан с редактирование данных, поэтому ранее вызывается SheetChange практически всегда за исключением ручного пересчета.

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
End Sub

Переход к ячейке. Вызывается при переходе от одной ячейки к другой:

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
End Sub

Разрешение на печать. Вызывается при выборе меню "Печать":

Private Sub Workbook_BeforePrint(Cancel As Boolean)
End Sub

Разрешение на сохранение. Вызываеться перед сохранением документа:

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
End Sub

Создание нового листа. Вызывается в момент создания нового листа. Обычно ведет за собой целую цепочку событий - Workbook_NewSheet, Workbook_SheetDeactivate, Workbook_SheetActivate:

Private Sub Workbook_NewSheet(ByVal Sh As Object)
End Sub

Изменение размера листа. Вызывается в момент изменения размера листа:

Private Sub Workbook_WindowResize(ByVal Wn As Excel.Window)
End Sub

Активизация окна. Вызывается в момент активизации окна книги, например, при переключении на книгу:

Private Sub Workbook_WindowActivate(ByVal Wn As Excel.Window)
End Sub

Щелчок правой кнопкой. Вызывается по нажатию правой кнопки мыши:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Excel.Range, Cancel As Boolean)
End Sub

Выводы. Часть событий связана в цепочки. То есть, например, событие Activate для одного объекта это событие Deactivate для другого объекта. Это работает для Окон, Книг и Листов. Часть событий вызывают за собой следующие события, например, ввод данных приведет к пересчету листа. Или вставка нового листа к событиям активизации. Знание событий может помочь в решении нетривиальных вопросов. Вот так можно запретить печать книги.

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Cancel = True
End Sub

Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Каев Артем.