1.5. События Application
Объект Excel.Application поддерживает множество событий. Работа с ними аналогична работе с событиями Word.Application, которыми мы занимались в соответствующем разделе предыдущей главы.
Рассмотрим основные шаги, которые необходимо произвести, чтобы работать с событиями приложения, перечислим события и приведем пример.
Создайте новый модуль класса. Добавьте в него объявление объекта типа Excel.Application с событиями
Public WithEvents obj_ExApp As Excel.Application
После этого в списке объектов редактора кода модуля появится объект obj_ExApp, а в списке событий - соответствующие ему события. Выберите нужное вам событие - автоматически будет создан обработчик для него. В частности, Excel.Application поддерживает следующие события:
-
NewWorkbook - происходит при создании новой книги
-
SheetActivate - при активации любого листа
-
SheetBeforeDoubleClick - происходит при двойном щелчке по листу, то есть позволяет перехватить щелчок и выполнить собственную процедуру до того, как будет выполнено стандартное действие.
-
SheetBeforeRightClick - позволяет перехватить нажатие правой кнопки мыши по листу.
-
SheetCalculate - после пересчета листа или после изменения данных, которые отображаются на диаграмме.
-
SheetChange - при изменении содержимого ячеек на любом листе.
-
SheetFollowHyperlink - происходит при переходе по гиперссылке, которая может быть включена в лист Microsoft Excel.
-
SheetSelectionChange - при изменении выделения на листе
-
WindowActivate - при активации окна книги.
-
WindowDeactivate - при деактивации окна книги.
-
WindowResize - при изменении размера окна книги.
-
WorkbookActivate - при активации книги.
-
WorkbookBeforeClose - перед закрытием книги.
-
WorkbookBeforePrint - перед печатью книги.
-
WorkbookBeforeSave - перед сохранением книги.
-
WorkbookDeactivate - при деактивации книги.
-
WorkbookNewSheet - при добавлении нового листа в любую из открытых книг.
-
WorkbookOpen - при открытии книги.
После того, как создан обработчик, написан его код, работа еще не окончена. Следующий шаг - это связывание объекта obj_ExApp с реально работающим приложением. Ниже приведен полный код модуля с одним обработчиком события, а также - процедура, служащая для связывания объекта obj_ExApp с работающим приложением. Эта процедура может существовать в виде отдельного макроса или в виде кода обработчика нажатия на кнопку. Ее выполнение можно назначить событию открывающейся книги, которая содержит данный модуль класса и т.д.
Итак, вот код процедуры, который связывает объект созданного нами класса AppEvents с приложением:
Dim obj_ExcelAppEv As New AppEvents
Sub EventsInit()
Set obj_ExcelAppEv.obj_ExApp = Excel.Application
End Sub
А вот полный код модуля класса AppEvents с объявлением объектной переменной и обработчиком события.
Public WithEvents obj_ExApp As Excel.Application
Private Sub obj_ExApp_NewWorkbook(ByVal Wb As Workbook)
'Выполняется при создании новой книги
MsgBox "Вы создали новую книгу"
End Sub
- Excel и его обьекты. Объект Application
- 1.1. Особенности программирования для ms Excel
- 13.2. Объект Application
- 1.3. Методы Application
- 1.3.1. Calculate - принудительный пересчет
- 1.3.2. GoTo - переход в ячейку
- 1.3.3. SendKeys - имитация нажатий на клавиши клавиатуры
- 1.3.4. Wait - пауза при выполнении макроса
- 1.4. Свойства Application
- 1.4.1. ActiveCell, ActiveChart, ActivePrinter, ActiveSheet, ActiveWindow, ActiveWorkbook - активные объекты
- 1.4.2. Cells, Columns, Rows, Sheets, Workbooks, Worksheets, Names - наборы объектов и коллекции
- 1.4.3. Range - ячейка или группа ячеек
- 1.4.4. ScreenUpdating - обновление экрана
- 1.4.5. Selection - ссылка на выделенный объект
- 1.4.6. WorksheetFunction - формулы Excel в коде vba
- 1.5. События Application