如果输入了某个文本并且之后按下了F9,我想运行某个宏,例如:
{{1}}
,然后是F9键。
Word应对F9键做出反应并运行宏DIA1,它会从键入的文本中删除单词“DIA1”并插入某个文本。
我怎么能这样做?
答案 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