Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

пава 19. Концепция событий Excel

607

Итак, зачем же отключать события? Основная причина этого — для предотвращения есконечного цикла возникающих событий.

Например, ячейка А1 на рабочем листе всегда должна содержать значение, которое [еныие или равно 12. Можно написать процедуру, которая будет выполняться при кажом изменении данных в ячейке, что позволит проверять действительность содержимого той ячейки. В данном случае контролируется событие Change объекта W orksheet, дя чего используется процедура, которая называется W orksheet_C hange. Процедура роверяет введенные пользователем данные, и если значение больше 12, то отображает- я окно сообщения, а содержимое ячейки очищается. Проблема заключается в том, что чистка содержимого ячейки с помощью кода VBA провоцирует возникновение еще одюго события Change, что приводит к повторному вызову процедуры обработки собыия. Поскольку подобный результат нежелателен, перед очисткой содержимого ячейки [еобходимо отключить механизм возникновения событий. После выполнения операции [ключите механизм поддержки событий, чтобы иметь возможность контролировать сле- (ующую попытку пользователя ввести правильное значение в ячейку.

Еще одним способом предотвращения бесконечного цикла возникающих событий яв- 1яется объявление статической булевой переменной ( S ta tic B oolean) в начале продедуры обработки события. Воспользуйтесь следующим выражением:

S tatic A b o rtP ro c As B o o le an

Каждый раз, когда процедура должна внести изменения, необходимо присваивать пе­ ременной A b o rtP ro c значение T rue (в противном случае потребуется убедиться, что переменной присвоено значение F alse). Вставьте следующий код в начало процедуры.

If A b o rtP ro c

Then

A b o rtP ro c

= F a ls e

E x it Sub

 

End i f

 

Если происходит повторный вызов процедуры обработки события, то значение True переменной A b o rtP ro c сообщает приложению о необходимости завершения этого вы­ зова. Кроме того, значение переменной A b o rtP ro c устанавливается равным F a lse .

Перекрестная ссы лка

©В качестве практического примера проверки правильности введенных дан­ ных можно рассмотреть процедуру, приведенную в разделе “Проверка пра­ вильности введенных данных”.

Предупреж дение

Отключение событий в Excel применяется одновременно ко всем рабочим книгам. Например, если отключить события в одной процедуре, а затем от­ крыть другую рабочую книгу, в которой существует процедура W orkbook Open, то эта процедура не будет выполняться.

Ввод кода процедуры обработки события

Каждая процедура обработки события имеет свое предопределенное имя. Ниже при­ водятся названия отдельных процедур обработки событий:

W orksheet_ S electionC hange;

Workbook_Open;