Построение обработчиков событий
События объекта Chart
События объекта Worksheet
Когда пользователь инициирует события, связанные с конкретным рабочим листом, то соответствующие сообщения посылаются как объектам верхнего уровня – Application и Workbook, так и самому объекту Worksheet. Конечно, этот объект получает значительно меньше сообщений, чем его "родители". В таб. 6.5.3 приведены основные события объекта Worksheet.
Таблица 6.5.3. События объекта Worksheet
| Событие | Появляется, когда пользователь или программа |
| Activate | Активизирует рабочий лист |
| BeforeDoubleClick | Дважды щелкает левой кнопкой мыши на одной из ячеек рабочего листа |
| BeforeRightClick | Щелкает правой кнопкой мыши на ячейке рабочего листа |
| Calculate | Выполняет действия, приведшие к перевычислению рабочего листа |
| Change | Изменяет ячейку с формулой на рабочем листе |
| Deactivate | Активизирует новый лист и тем самым деактивирует старый |
| SelectionChange | Изменяет выделение |
В отличие от объекта Worksheet, все события которого могут быть обработаны на верхнем уровне, объект Chart имеет специфические события, сообщения о которых направляются только ему одному. Встроенные диаграммы и листы диаграмм имеют одни и те же события. Разница состоит в том, что события встроенных диаграмм по умолчанию выключены, поэтому необходимо потрудиться, чтобы стало возможным их подключение и написание обработчиков событий. В таб. 6.5.4 приведены основные события объекта Chart.
Таблица 6.5.4. События объекта Chart
| Событие | Появляется, когда пользователь или программа |
| Activate | Активизирует лист диаграмм. Естественно, его нет у встроенных диаграмм |
| BeforeDoubleClick | Дважды щелкает левой кнопкой мыши на диаграмме |
| BeforeRightClick | Щелкает правой кнопкой мыши на диаграмме |
| Calculate | Добавляет или изменяет данные на диаграмме |
| SeriesChange | Изменяет значение точки ряда данных |
| Deactivate | Активизирует новый лист и тем самым деактивирует старый |
| DragOver | Перемещает данные, располагая их поверх диаграммы |
| DragPlot | Перемещает диапазон ячеек, располагая их поверх диаграммы |
| MouseDown | Нажимает кнопку мыши при позиционировании ее над диаграммой |
| MouseMove | Передвигает курсор мыши по диаграмме |
| MouseUp | Завершает перемещение мыши и освобождает кнопку |
| Resize | Изменяет размер диаграммы |
| Select | Выделяет некоторый элемент диаграммы |
Обработчики событий для объектов Workbook, Worksheet и объектов Chart, задающих листы диаграмм, построить нетрудно. Все эти события по умолчанию включены, поэтому для построения обработчика достаточно перейти в окно проектов, выбрать нужный объект, а затем в окне процедур выбрать из списка имя нужного обработчика. В результате этих действий появится заготовка, содержащая заголовок, после чего останется написать код обработчика.
Более сложно строятся обработчики событий для объекта Application и объектов Chart, задающих встроенные диаграммы. Методика построения обработчиков событий для объекта Application рассмотрена при изучении Word. Приведем краткую схему действий:
1. Вначале нужно создать класс (ClassModule), в котором следует объявить объекты типа Chart или Application с событиями (WithEvents).
2. Затем нужно написать инициализирующую процедуру, в которой объявить объект созданного класса – объект, уже имеющий события; после этого остается только связать этот объект со встроенной диаграммой или приложением.
3. Теперь объект появляется в окне проекта и далее применяется уже обычная схема создания обработчика.