Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Коды специальных клавиш для метода OnKey



Специальная клавиша Код
Alt или Option %
Shift +
Ctrl ^

Параметр Procedure - необязательный строковый аргумент, который определяет имя процедуры, запускаемой при нажатии клавиши или комбинации клавиш. Если требуется отключить исполнение макроса при нажатии комбинации, присвойте данному параметру пустую строку (""). Если требуется восстановить исходную функцию сочетания клавиш, выполните OnKey, не указывая параметр Procedure. Приведем пример использования ОпКеу:

Назначение комбинации клавиш <Ctrl>+< > процедуре GetSalesData.

Application.OnKey "^{RIGHT}", "GetSalesData"

'Отмена назначения комбинации клавиш <Ctrl>+< >.

Application.ОпКеу "^{RIGHT}", ""

'Восстановление функции комбинации клавиш <Ctrl>+< >.

Application.OnKey "^{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 позволяет установить текст команды Правка\Отменить (Edit\Undo) и связать с этой командой процедуру. Синтаксис метода напоминает синтаксис метода OnRepeat:

Application.OnUndo(Text, Procedure)

Параметр Text устанавливает текст команды Правка\0тменить. Аргумент Procedure определяет процедуру, связанную с этой командой.

Метод Quit. Чтобы выйти из Excel, не запуская макросы Auto_Close, используется метод Quit объекта Application. При выходе выводится запрос на запись не сохраненных открытых рабочих книг. Метод имеет следующий синтаксис:

Application.Quit

Примечание.

Если требуется выйти из Excel, не отображая запрос на сохранение открытых рабочих книг, присвойте значение False свойству Application.DisplayAlerts. Однако при этом следует быть крайне осторожным. Не забудьте, что без сохранения закрываются все открытые рабочие книги, и не только открытые вашим приложением.

Использование событий объекта Application

В предыдущих версиях VBA у каждого объекта поддерживалось только одно событие, в большинстве случаев - событие Click. В VBA 5.0 объекты, включая элемент Application, имеют множество событий. Чтобы обработать событие с помощью объекта Application, необходимо создать новый модуль класса и объявить в нем переменную, используя ключевое слово WithEvents:

Public WithEvents oApp As Application

Ключевое слово WithEvents определяет, что переменная oApp используется для обработки события объекта. Данное ключевое слово допускается только в модулях класса и описывает только переменные уровня модуля. Теперь требуется связать описанный в модуле класса объект с элементом Application. Это можно сделать в любом модуле, указав следующий код:

'Инструкция Dim располагается в разделе описаний модуля.

'Имя EventClassModule - имя модуля класса.

Dim X As New EventClassModule

Sub InitializeAppEvents()

Set X.oApp = Application

End Sub

После выполнения процедуры initializeAppEvents объект оАрр в модуле пасса указывает на объект Excel Application, что позволяет использовать процедуры обработки в модуле класса при возникновении событий. Если необходимо включить или отключить обработку событий, в программе следует изменить значение свойства Application.EnableEvents. Если данное свойство имеет значение True, то процедуры обработки доступны.

Ниже описываются некоторые события объекта Application. Следует отметить, что именем объекта для события object_ИмяСобытия (например, object_NewWorkbook) - является имя переменной, которая описана с помощью ключевого слова WithEvents.

Private Sub object_NewWorkbook(ByVal Wb As Workbook)

Параметр Wb - ссылка на рабочую книгу, создание которой вызвало событие.

Событие WorkbookActivate. Событие WorkbookActivate возникает при активизации любой рабочей книги. Процедура обработки события имеет следующий синтаксис:

Private Sub object_WorkbookActivate (ByVal Wb As Workbook)

Параметр Wb - ссылка на рабочую книгу, активизация которой вызвало событие. Например, если требуется вручную произвести вычисления для всех открытых рабочих книг, то при активизации книги можно использовать следующую процедуру:

Private Sub oApp_WorkbookActivate(ByVal Wb As Workbook)

Application. Calculate

End Sub

Событие WorkbookBeforeClose. Событие WorkbookBeforeClose возникает непосредственно перед закрытием открытой рабочей книги. Синтаксис процедуры обработки является следующим:

Private Sub object_WorkbookBeforeClose(ByVal Wb As Workbook, _ ByVal Cancel As Boolean)

Параметр Wb - ссылка на рабочую книгу, которую требуется закрыть. Параметр Cancel имеет значение False при возникновении события. Если процедура обработки события присваивает значение True данному параметру, то рабочая книга не закрывается по завершении выполнения процедуры. Данное событие используется, например, для выполнения метода Calculate или для исполнения подпрограммы проверки условий на значение:

Private Sub oApp_WorkbookBeforeClose(ByVal Wb As Workbook, ByVal Cancel As Boolean) Application.Calculate

'Вызов внешней подпрограммы проверки условий на значение

ValidateEntries

End Sub

Событие WorkbookBeforePrint. Событие WorkbookBeforePrint возникает непосредственно перед печатью открытой рабочей книги. Синтаксис процедуры обработки является следующим:

Private Sub object_WorkbookBeforePrint(ByVal Wb As Workbook, _ ByVal Cancel As Boolean)

Параметр Wb - ссылка на рабочую книгу, которую требуется напечатать. Параметр Cancel имеет значение False при возникновении события. Если требуется отменить печать документа, присвойте данному параметру в процедуре обработки значение True.

Событие WorkbookBeforeSave. Событие WorkbookBeforeSave возникает непосредственно перед сохранением открытой рабочей книги. Синтаксис процедуры обработки является следующим:

Private Sub object_WorkbookBeforeSave{ByVal Wb As Workbook, _

ByVal SaveAsUi As Boolean, ByVal Cancel As Boolean)

Параметр Wb - ссылка на сохраняемую рабочую книгу. Если требуется отобразить диалоговое окно Сохранение документа (Save As), присвойте параметру SaveAsUi значение True. Параметр Cancel имеет значение False при возникновении события. Если требуется отменить сохранение документа, присвойте данному параметру значение True.

Событие WorkbookDeactivate. Событие WorkbookDeactivate возникает, когда открытая рабочая книга теряет фокус. Синтаксис процедуры обработки является следующим:

Private Sub object_WorkbookDeactivate (ByVal Wb As Workbook)

Параметр wb - ссылка на рабочую книгу, которая теряет фокус.

Событие WorkbookNewSheet. Событие WorkbookNewSheet возникает при добавлении нового листа в открытую рабочую книгу. Синтаксис процедуры обработки таков:

Private Sub object_WorkbookNewSheet(ByVal Wb As Workbook, _ ByVal Sh As Object)

Параметр wb - ссылка на рабочую книгу, в которую добавлен лист. Аргумент Sh - вновь созданный лист.

Данное событие можно использовать, чтобы удалить вновь созданный рабочий лист, если количество листов в рабочей книге больше заданного:

Private Sub object_WorkbookNewSheet (ByVal Wb As Workbook, _ ByVal Sh As Object)

If Wb.Worksheets.Count > 6 Then

MsgBox "Максимальное число листов в рабочей книге равно 5."

Wb.Sh.Delete

End If

End Sub

Событие WorkbookOpen. Событие WorkbookOpen возникает при открытии рабочей книги. Синтаксис процедуры обработки является следующим:

Private Sub object__WorkbookOpen (ByVal Wb As Workbook)

Параметр Wb - ссылка на открываемую рабочую книгу.





Дата публикования: 2014-11-28; Прочитано: 300 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...