В предыдущих версиях Excel не
поддерживались события. Чтобы
устранить это ограничение, в
объект Application были
добавлены методы OnKey, OnRepeat,
OnTime и OnUndo. Они
обычно используются в процедуре Auto_0pen, которая
автоматически выполняется при
открытии рабочей книги.
Метод OnKey
Метод OnRepeat
Метод OnTime
Метод OnUndo
Метод OnKey
выполняет заданную процедуру при
нажатии определенной клавиши или
комбинации клавиш. Метод имеет
следующий синтаксис:
Application.OnKey
Key, Procedure
Параметр Key -
обязательный строковый аргумент,
который определяет комбинацию
клавиш или клавишу, которая
назначена процедуре. В параметре Key можно
указать также специальные
клавиши (табл. 10.2).
Клавиша |
Код |
<Backspace> |
{BACKSPACE}
или {BS} |
<Break> |
{BREAK} |
<Caps
Lock> |
{CAPSLOCK} |
<Clear> |
{CLEAR} |
<Delete> |
{DELETE}или{DEL} |
Клавиша |
Код |
<4-> |
{DOWN} |
<End> |
{END} |
<Enter>
(цифровая клавиатура) |
{ENTER} |
<Enter> |
rv |
<Escape> |
{ESCAPE}
или {ESC} |
<F1>-<F15> |
{F1}-{F15} |
<Home> |
{HOME} |
<lnsert> |
{INSERT} |
<<-> |
{LEFT} |
<Num
Lock> |
{NUMLOCK} |
<Page
Down> |
{PGDN} |
<Page
Up> |
{PGUP} |
--> |
{RIGHT} |
<Scroll
Lock> |
{SCROLLLOCK} |
<Tab> |
{TAB} |
<^> |
{UP} |
Если требуется задать
сочетание одновременно
нажимаемых клавиш, используйте
табл. 10.3.
Специальная
клавиша |
Код |
Alt или
Option |
% |
Shift |
+ |
Ctrl |
/\ |
Command |
* |
Параметр
Procedure - необязательный
строковый аргумент, который
определяет имя процедуры,
запускаемой при нажатии клавиши
или комбинации клавиш. Если
требуется отключить исполнение
макроса при нажатии комбинации,
присвойте данному параметру
пустую строку (""). Если
требуется восстановить исходную
функцию сочетания клавиш,
выполните метод ОпКеу,
не указывая параметр Procedure. Приведем пример
использования метода ОпКеу:
' Назначение
комбинации клавиш <Ctrl> + < -->
>
'процедуре GetSalesData.
Application.ОnКеу
"^{RIGHT}", "GetSalesData"
' Отмена
назначения комбинации клавиш
<Ctrl> + < --> >".
Application.ОnКеу
""{RIGHT}", ""
'
Восстановление функции
комбинации клавиш <Ctrl> + <-->
>".
Application.ОпКеу
"^{RIGHT}"
Метод OnRepeat
определяет процедуру, которая
выполняется при выборе команды Правка
| Повторить (Edit | Repeat).
Метод имеет следующий синтаксис:
Application.OnRepeat
Text, Procedure
ПараметрText -
обязательный аргумент, задающий
текст команды Правка |
Повторить. Параметр Procedure -
обязательный аргумент,
содержащий имя процедуры,
которая выполняется при выборе
команды Правка | Повторить.
Приведем пример использования
данного метода. Следующая
инструкция устанавливает текст
команды Правка | Повторить
равным "Повторить чтение
данных по сбыту" и связывает
процедуру GetSalesData с данной
командой:
Application.OnRepeat
"Повторить чтение данных по
сбыту", _
"SaleData.xls!GetSalesData"
Метод OnTime
позволяет назначить выполнение
процедуры на заданное время.
Метод имеет следующий синтаксис:
Application.OnTime(EarliestTime,
Procedure, LatestTime, Schedule)
Обязательный параметр EarliestTime -
момент запуска процедуры.
Параметр Procedure
также обязателен. Он содержит имя
выполняемой процедуры. Следует
отметить, что для ввода значения
параметра EarliestTime
можно использовать функцию TimeValue ().
Если на момент, заданный
параметром EarliestTime,
Excel не может запустить указанную
процедуру из-за того, что
выполняет другую операцию, то
дополнительный параметр LatestTime
определяет последний момент
запуска этой процедуры. Если по
прошествии указанного времени
Excel так и не освободился, то
процедура не исполняется.
Параметр Schedule
- необязательный аргумент. Если
он равен значению True (по
умолчанию), то выполнение
процедуры откладывается на
сутки. Приведем пример
использования метода OnTime:
' Выполнение
процедуры GetSalesData по прошествии 1
минуты
' с текущего момента.
Application.OnTime
Now + TimeValue ("00:01:00"),
"GetSalesData"
' Выполнение
процедуры UpdateSalesData в 14:00.
Application.OnTime
TimeValue(" 14:00:00 "),
"UpdateSalesData"
Метод OnUndo
позволяет установить текст
команды Правка | 0тменить (Edit\
Undo) и связать с этой командой
процедуру. Синтаксис метода
напоминает синтаксис метода OnRepeat:
Application.OnUndo(Text,
Procedure)
Параметр Text
устанавливает текст команды Правка
| 0тменить. Аргумент Procedure
определяет процедуру, связанную
с этой командой.