События для объекта Workbook происходят с определенной рабочей книгой. Эти события по умолчанию активированы, но как было сказано, их можно отключить, установив свойство Enable Events на False.
Чтобы создать новую процедуру события Workbook, следуйте приведенным ниже инструкциям.
1. Дважды щелкните на объекте ЭтаКнига, чтобы активировать его.
2. Щелкните на списке объектов Object и выберите пункт Workbook.

Пример. Окно приложения Excel имеет максимальный размер и показывает пользователю текущую дату:
Application.WindowState = xlMaximized
MsgBox "Сегодня: " & Date
End Sub
ПРИМЕЧАНИЕ - Если при запуске Excel или при открытии рабочей книги вы будете удерживать нажатой клавишу Shift, то не дадите процедуре Workbook Open запуститься.
Событие Activate запускается, когда активизируется рабочая книга, — например, при ее первоначальном открывании, при переходе в окно Excel из другой программы или при переключении между двумя рабочими книгами.
Пример. При работе в файле, окно имеет максимальный размер.
Application.WindowState = xlMaximized
End Sub
Событие SheetActivate выполняется, когда в рабочей книге активизируется любой лист. Событие произойдет независимо от типа активированного листа, будь то рабочий лист
или диаграмма. Важно проверить, какой тип листа активирован. Выражение If.. Then... Else может использоваться для определения, какой код будет выполняться для данного типа листа.
Пример. Проверка типа листа и активизация ячейки А1:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If TypeName(Sh) = "Worksheet" Then Range("A1").Select
End If
End Sub
4 .Событие NewSheet
Sh.Move After:=Sheets(Sheets.Count)
End Sub
Процедура события NewSheet часто используется, чтобы помочь пользователям автоматизировать работу.
If TypeName(Sh) = "Worksheet" Then
Range("A1") = "Рабочий лист создан" & Now()
End If
End Sub
Процедура события BeforeSave выполняется перед сохранением рабочей книги. Она использует два аргумента - SaveAsUI и Cancel. Аргумент SaveAsUI указывает, нужно ли показывать окно диалога Save As (Сохранить как), а аргумент Cancel может использоваться для отмены операции сохранения.
Пример. Просьба пользователя перед сохранением рабочей книги подтвердить, что они хотят сохранить сделанные изменения:
Когда пользователь сохраняет рабочую книгу, выполняется процедура Workbook BeforeSave. Если операция сохранения выводит окно диалога Excel Save As (Сохранить как), то переменная SaveAsUI равна True. Если процедура BeforeSave устанавливает аргумент Cancel на True, файл не будет сохранен.
a = MsgBox("Хотите сохранить изменения?", vbYesNc)
If a = vbNo Then Cancel = True
End Sub
Application.Iflindows.Arrange ulArrangeStyleTiled
End Sub
ВНИМАНИЕ - Событие Deactivate происходит, когда рабочая книга перестает быть выбранной, однако оно также запускается, когда открывается новая рабочая книга или закрывается текущая. Будьте осторожны, применяя это событие; тщательно тестируйте процедуру, чтобы убедиться, что получаете желаемый результат.
Событие BeforePrint выполняется, когда пользователь пытается распечатать рабочую книгу или использует предварительный просмотр. Запрос передается процедуре события как аргумент Cancel, который может использоваться для отмены печати при значении True. К сожалению, эта процедура имеет ограничение: ока не может определять, идет ли речь о печати или о предварительном просмотре. Следующая процедура события пересчитывает всю рабочую книгу перед печатью активной рабочей книги:
For Each Wk In Worksheets
Wk.Calculate
Next
End Sub
ПРИМЕЧАНИЕ - При тестировании процедуры события BeforePrint вы можете сэкономить время и бумагу, используя вместо печати предварительный просмотр.
Процедура события BeforePrint может применить к рабочей книге определенные форматы - например, изменить поля страницы, установить область печати, обозначить заголовки и столбцы, которые должны повторяться на каждой странице, или просто распечатать рабочий лист на одной странице. Бели есть ряд форматов, которые надо применить перед печатью, то процедура события, правильно оформляющая страницу, сбережет время на повторную печать рабочих книг с неверным форматом.
8. Событие BeforeClose
Процедура события BeforeClose выполняется перед закрытием рабочей книги. У процедуры обработки события BeforeClose объекта workbook, генерируемого перед закрытием рабочей книги, имеется параметр cancel. При значении True он блокирует закрытие книги. При значении False — закрытие разрешено.