在文本+ F9处触发宏

时间:2017-07-25 22:57:14

标签: vba ms-word word-vba

如果输入了某个文本并且之后按下了F9,我想运行某个宏,例如:

{{1}}

,然后是F9键。

Word应对F9键做出反应并运行宏DIA1,它会从键入的文本中删除单词“DIA1”并插入某个文本。

我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

两件事:

1-解决方案在最后一行中找到“DIA1”,它不会检查最后一个单词。如果你坚持这里的最后一句话就是:

Sub Lastword()
    Dim rng As Range, wrd As String
    Set rng = ActiveDocument.Paragraphs.Last.Range
    wrd = StrReverse(Trim(Left(StrReverse(rng), InStr(1, StrReverse(rng), " ", vbTextCompare))))
    MsgBox wrd
End Sub

2- F9-F12保留,因此您最接近的选项是F8。或者,您可以按照these steps将宏指定给F9,如@Ibo建议的那样。

<强>解决方案:

将F8绑定到您的宏

Sub Bind()
    Application.CustomizationContext = ThisDocument.AttachedTemplate
    KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyF8), KeyCategory:=wdKeyCategoryMacro, Command:="Runme"
End Sub

2-“查找并替换”宏:

Sub Runme()
    Dim rng  As Range
    Set rng = ActiveDocument.Paragraphs.Last.Range
    rng.Find.Execute FindText:="DIA1", ReplaceWith:="hello", Replace:=wdReplaceAll
End Sub

3 - 如果您需要取消绑定F8:

Sub Unbind()
    CustomizationContext = NormalTemplate
    FindKey(BuildKeyCode(wdKeyF8)).Clear
End Sub

答案 1 :(得分:0)

您需要定义将在F9上触发的宏,然后为其分配F9。 Learn How

假设这个宏的名称是ttt。我假设当你按F9时,你只需键入要运行的函数名称。让我们说DIA1。这是你应该遵循的结构。您需要添加替换字符串DIA1等所需的行,但这可行。我自己测试了

Sub DIA1()
    MsgBox "hello"
End Sub


Sub ttt()
    Selection.EndKey Unit:=wdLine
    Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
    Selection.Copy

    Application.Run CStr(Selection)
End Sub