Использование методов объекта Application
В большинстве программ VBA, в которых используется объект Application, обычно изменяются свойства этого объекта. Однако также имеются несколько методов объекта Application, требующие детального рассмотрения.
Метод Calculate. Если в Excel установлен режим вычислений вручную, можно использовать метод Calculate объекта Application для принудительного выполнения вычислений во всех открытых рабочих книгах. Метод имеет следующий синтаксис:
Application.Calculate
Метод Goto. Метод Goto позволяет выбрать требуемый диапазон или процедуру VBA в любой рабочей книге. Отличие данного метода от рассматриваемого ниже метода Select заключается в том, что метод Goto активизирует связанную с диапазоном или процедурой рабочую книгу, если она не активна. Метод имеет следующий синтаксис:
Application.Goto Reference, Scroll
Параметр Reference - необязательный аргумент, который используется для указания требуемого диапазона в формате R1C1 или для задания имени процедуры VBA. Если данный параметр опущен, то подставляется последний диапазон, который указывался в методе Goto.
Параметp Scroll также не обязателен. Если он равен True, то после выполнения метода левый верхний угол заданного в методе диапазона выводится в левом верхнем углу окна.
Метод InputBox. Функция inputBox() рассмотрена выше. Метод ох хотя и кажется похожим, на самом деле имеет большие отличия. Функция InputBox() возвращает только строку. Метод InputBox имеет необязательный параметр type, который позволяет задать тип введенных пользователем данных. Метод имеет следующий синтаксис:
Application.InputBox(prompt, title, default, left, top, _ helpFile,helpContextID, type)
Параметр prompt - обязательный аргумент, определяющий сообщение, которое требуется отобразить в окне ввода. Параметр title - дополнительный аргумент, который задает заголовок окна. По умолчанию выводится заголовок "Ввод" (Input). Другим необязательным параметром является аргумент default. Он определяет значение по умолчанию, которое нужно вывести в окне. Параметры left и top - дополнительные параметры, которые определяют положение окна ввода по горизонтали и по вертикали относительно левого верхнего угла экрана. Параметры helpFile и helpContextID - имена файла справки и контекстного идентификатора в этом файле. Аргумент type определяет тип данных, возвращаемый методом. Если аргумент type не задан, то возвращается текст. В качестве значения данного apгумента можно использовать значения, перечисленные в таблице:
Значение | Тип |
Формула | |
Номер | |
Текст (строка) | |
Логическое значение (True или False) | |
Ссылка на ячейки, например, на объект Range | |
Значение ошибки, например, #Н/А | |
Массив |
Значения параметра type не являются последовательными, поскольку в программе можно использовать их комбинацию. Например, если необходимо задать ввод либо текста, либо чисел, следует присвоить данному параметру значение 1 + 2.
При нажатии кнопки ОК метод InputBox возвращает значение, введенное в окно, при нажатии кнопки Отмена (Cancel) - значение False. Приведем пример использования метода InputBox, в котором показано, как данный макрос реагирует на ввод текста или на нажатие кнопки Отмена:
Sub Input_example()Dim hourly_wage As Currency Dim num_of_hours As Single Dim error_text As String'Параметр Type получает значение 1 (число). hourly_wage = Application.InputBox("Введите ставку почасовой_ оплаты:", "Почасовая _ оплата", 3.75, 1)'Обратите внимание на использование значения False. If hourly_wage = False ThenMsgBox "Операция отменена."EndEnd Ifnum_of_hours = Application.InputBox("Введите количество_ отработанных часов:", _ "Отработанные часы", 40, 1)If num_of_hours = False ThenMsgBox "Операция отменена."End subElseMsgBox "К оплате " & Format((num_of_hours *_ hourly_wage), "$##,##0.00")End IfEnd SubПредупреждениеПри проверке нажатия кнопки Отмена следует сравнить возвращаемый методом InputBox результат со значением False, а не со строкой "False".
Методы OnKey, OnRepeat, OnTime и OnUndo. В предыдущих версиях не поддерживались события. Чтобы устранить это ограничение, в объект Application были добавлены методы OnKey, OnRepeat, OnTime и OnUndo. Они обычно используются в процедуре Auto_Open, которая автоматически выполняется при открытии рабочей книги.
Метод OnKey выполняет заданную процедуру при нажатии определенной клавиши или комбинации клавиш. Метод имеет следующий синтаксис:
Application.OnKey Key, Procedure
Параметр Key - обязательный строковый аргумент, который определяет комбинацию клавиш или клавишу, которая назначена процедуре. В параметре Key можно указать также специальные клавиши:
Код клавиш для метода OnKey.
Клавиша | Код |
<Backspace> | {BACKSPACE} или {BS} |
<Break> | {BREAK} |
<Caps Lock> | {CAPSLOCK} |
<Clear> | {CLEAR} |
<Delete> | {DELETE} или {DEL} |
<End> | {END} |
<Enter> (цифровая клавиатура) | {ENTER} |
<Enter> | ~ |
<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} |
Если требуется задать сочетание одновременно нажимаемых клавиш, используйте следующие: