Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
28
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Процедуры, выполняемые при наступлении событий

В этом разделе рассмотрим процедуры, которые вызываются на выполнение при наступлении определенных событий, например двойной щелчок на каком-либо элементе интерфейса, активизация рабочего листа, переход в окно приложения, ввод данных в ячейку листа и т.д. Имена процедур, свойств и методов, которые выполняются в ответ на события, должны начинаться с On. Excel поддерживает следующие On-процедуры.

  • OnAction - выполняется, если указанный объект становится активным, например на нем щелкнули кнопкой мыши.

  • OnCalculate - выполняется после пересчета рабочего листа.

  • OnData - выполняется, когда получены данные из приложения, отличного от Excel.

  • OnDoubleСlick - выполняется, если на указанном объекте дважды щелкнули кнопкой мыши.

  • OnEntry - выполняется, когда пользователь нажал клавишу <Enter> (или переместил табличный курсор в другую ячейку) после ввода данных в ячейку.

  • OnKey - выполняется, если нажата указанная комбинация клавиш.

  • OnRepeat - выполняется, если возвращена отмененная команда.

  • OnSheetActivate - выполняется, когда делается активным (текущим) указанный рабочий лист.

  • OnSheetDeactivate - выполняется, если пользователь переходит из указанного рабочего листа в любой другой.

  • OnTime - выполняется в указанное время, если в это время загружена программа Excel и открыта книга, содержащая процедуру OnTime.

  • OnUndo - выполняется при отмене ранее выполненной команды.

  • OnWindow - выполняется, когда пользователь переключается в указанное окно либо когда активизируется или открывается окно приложения Excel.

Многие из приведенных здесь событий в справочной системе VBA помечены как hidden (скрытый). Это указывает на то, что они не отображены в окне просмотра объектов, но не означает, что они не доступны и их нельзя использовать.

Обычно Оn-свойства объектов устанавливаются в процедуре Auto_Open рабочей книги. Например, можно предусмотреть сохранение рабочей книги при наступлении события OnData либо проверить корректность введенных данных после события OnEntry. Продемонстрируем на небольшом примере, как "'работают" события.

  1. Откройте новую рабочую книгу, которая должна иметь не менее двух рабочих листов.

  2. Создайте процедуру Auto_Open со следующим кодом:

Worksheets("Лист1").OnSheetActivate= "Попытка"

  1. Создайте новую процедуру с именем попытка со строкой кода

MsgBox "Вы вернулись в Лист1!"

  1. Сохраните рабочую книгу под именем Событие и закройте ее.

  2. Откройте рабочую книгу Событие и перейдите в рабочий лист Лист2.

  3. Теперь перейдите в Лист1 - отобразится окно сообщения.

  4. Щелкните на кнопке ОК для закрытия окна сообщения.

Для следующего примера в процедуру Auto_Open введите строку кода

Worksheets("Лист1").OnEntry = "ПроверкаА1"

Теперь создайте процедуру ПроверкаА1, код которой приведен в листинге 24.3.

Листинг 24.3. Процедура ПроверкаА1

1: Sub ПроверкаА1()

2:  If Range("A1").Value < 5 Then

3:   MsgBox "Значение должно быть не меньше 5"

4:   Range("A1").Clear

5:   Range("A1").Activate

6:  End If

7: End Sub

Перейдите в Лист1 и выберите ячейку А1. Введите число 4 и нажмите <Enter>. Появится окно с сообщением, что число должно быть не меньше 5. Щелкните на кнопке ОК для закрытия окна сообщения.