使用 CommandParameter 添加 KeyBindings 以调用 sub()

Adding KeyBindings with CommandParameter to call a sub()

我想添加 KeyBindings,它将调用带有参数的 sub。例如:

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 文档中的示例时,它正在工作:

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

调用不带参数的 sub 也有效:

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

只有内置命令支持传递命令参数。对于 "ordinary" 宏,这是不可能的。

从逻辑上看问题时,按应用字体大小 8 的组合键是静态的 - 它始终应用字体大小 8 而不是其他任何内容。因此,按组合键 运行 自定义过程本质上也是静态的 - 组合键应该如何处理可变输入?没有动态传递任何东西的工具。

如果组合键调用的过程需要处理变量信息,则需要将其存储在某个地方,宏可以读取它。例如,这可能是书签中的文本或文档中的内容控件、文档 Variable 中的值或 CustomXMLPart 中的节点,或者存储在外部文件或注册表中的内容。或者让宏显示 InputBox.