使用 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
.
我想添加 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
.