Добавление привязок клавиш с помощью CommandParameter для вызова sub () - PullRequest
0 голосов
/ 06 февраля 2020

Я хотел бы добавить привязки клавиш, которые будут вызывать подпрограмму с параметром. Например:

Sub dummy(text As String)
    MsgBox (text)
End Sub

Dim kbNew As KeyBinding
Set kbNew = KeyBindings.Add(KeyCategory:=wdKeyCategoryCommand, Command:="dummy", KeyCode:=BuildKeyCode(wdKeyControl, wdKeyAlt, wdKeyQ), CommandParameter:="show me")

Это не работает. Но когда я использую пример из MS docs, он работает:

Set kbNew = KeyBindings.Add(KeyCategory:=wdKeyCategoryCommand, Command:="FontSize", KeyCode:=BuildKeyCode(wdKeyControl, wdKeyAlt, wdKeyQ), CommandParameter:="8")

Также работает вызов сабвуфера без параметра:

Sub dummy()
    MsgBox ("show me")
End Sub
Set kbNew = KeyBindings.Add(KeyCategory:=wdKeyCategoryCommand, Command:="dummy", KeyCode:=BuildKeyCode(wdKeyControl, wdKeyAlt, wdKeyQ))

1 Ответ

0 голосов
/ 06 февраля 2020

Только встроенные команды поддерживают передачу параметра команды. Для «обычных» макросов это невозможно.

Когда проблема рассматривается логически, нажатие комбинации клавиш, которая применяет размер шрифта 8, является stati c - это всегда будет применять размер шрифта 8, а не что-либо еще , Следовательно, нажатие комбинации клавиш для запуска пользовательской процедуры также неотъемлемо: c - как комбинация клавиш должна иметь дело с переменным вводом? Там нет возможности для передачи чего-либо динамически.

Если процедура, вызываемая комбинацией клавиш, должна работать с переменной информацией, ее необходимо будет где-то сохранить, и макрос сможет ее прочитать. Это может быть, например, текст в закладке или элемент управления содержимым в документе, значение документа Variable или узел в CustomXMLPart или содержимое, хранимое извне в файле или реестре. Или иметь отображение макроса InputBox.

...