Переопределение горячих клавиш приложения



Метод опКеу может с успехом применяться для переопеределения горячих клавиш, присущих данному приложению. При этом его иногда применяют в комбинации с оператором SendKeys, который посылает последовательность символов активному окну, как если бы они были набраны на клавиатуре.

Например, в следующее приложение (листинги 5.12, а и 5.12, 6) при нажатии комбинации клавиш <Ctrl>+<o> вместо окна Открытие документа отображается окно с сообщением "Это заглушка!" При нажатии комбинации клавиш <Ctrl>+<x> вместо операции вставки из буфера обмена в книгу добавится новый рабочий лист. А при нажатии комбинации клавиш <Ctrl>+<p> вместо печати ничего не происходит.

Листинг 5.12, а. Переопределение горячих клавиш приложения.

Модуль ЭтаКнига

Private Sub Workbook__Open ()

With Application

.OnKey "^о", "SetDunimy"

.OnKey "лх", "SetNewAction"

.OnKey "лр", ""

End With

End Sub

Листинг 5.12, б. Переопределение горячих клавиш приложения.

Стандартный модуль

Public Sub SetDummy()

MsgBox "Это заглушка!"

End Sub

Public Sub SetNewAction()

SendKeys "^n"

End Sub

Проверка правописания отдельного слова

Проверку правописания можно осуществить методом CheckSpelling объекта Application, который возвращает значение True, если специфицированное слово находится в словаре, и значение False в противном случае.

CheckSpelling(Word, CustomDictionary, IgnoreUppercase)

Здесь:

r Word— обязательный параметр, используемый только с объектом Application, специфицирующий проверяемое слово;

r CustomDictionaryнеобязательный параметр, указывающий имя файла с пользовательским словарем;

r IgnoreUppercase— необязательный параметр, принимающий логические значения и определяющий, надо ли проверять правописание слов, набранных строчными буквами.

Например, следующий код проверяет принадлежность указанного слова словарю.

Dim wrd As String

wrd ="Привет"

If Application.CheckSpelling(wrd) Then

MsgBox "Слово '" & wrd & "' найдено"

Else

MsgBox "Слово '" & wrd & "' не найдено"

End If

Преобразование имени MS Excel в объект или значение

Метод Evaluate объекта Application преобразует имя MS Excel в объект или значение.

Evaluate(Name)

Здесь Name— обязательный параметр типа string, задающий конвертируемое имя. Допустимы следующие типы имен:

r ссылка формата А1 на ячейку, которая рассматривается как абсолютная ссылка;

r  диапазон;

r пользовательское имя;

r внешние ссылки. При этом надо использовать оператор ! для указания ссылки на объект из другой книги. Например, Evaluate("[Отчет.XLS]Май!А1") .


Симулирование вычисления арифметических выражений

Метод Evaluate позволяет по строковому представлению арифметического выражения находить его значение. Например, следующий оператор отображает в диалоговом окне значение арифметического выражения (1+3)/2+sin(2).

MsgBox Application.Evaluate("(l+3)/2+sin(2)")

Простейший функциональный калькулятор

Обобщая идею, обсужденную в предыдущем разделе, используя метод Evaluate, легко создать простейший функциональный калькулятор, который возвращает значение введенного арифметического выражения. Для этого надо иметь средство ввода пользователем строкового представления арифметического выражения, что можно обеспечить методом InputBox. В коде листинга 5.13 метод Evaluate произведет требуемые вычисления, а диалоговое окно MsgBox обеспечит отображения результата.

Листинг 5.13. Калькулятор

Sub Calculator()

Dim s As String

s = InputBox("Введите арифметическое выражение")

MsgBox s & " = " & Application.Evaluate(s)

End Sub

Симулирование ячеек рабочего листа

Метод Evaluate позволяет симулировать работу с ячейками или диапазонами рабочего листа без реального воплощения этих действий на рабочем листе. Например, в следующем коде симулируется ввод в ячейку А1 значения 25, ввод в ячейку А2 формулы =a1^2 и считывание возвращаемого этой формулой значения.

Evaluate("A1").Value = 25

Evaluate("A2").Formula = "=А1^2"

MsgBox Evaluate("A2").Value

Тут же задачу можно решить в следующем коде, но здесь уже производится симулирование не операции ввода и вывода, а самих ячеек.

Dim firstCell As Range

Dim secondCell As Range

Set firstCell = Evaluate("A1")

Set secondCell = Evaluate("A2")

firstCell.Value = 25

secondCell.Formula = "=А1^2"

MsgBox secondCell.Value


Дата добавления: 2019-02-12; просмотров: 169; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!