使用 CommandParameter 添加键绑定以调用 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))

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

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

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

最新更新