2017-07-25 44 views
1

我想運行某個宏,如果某個文本已被鍵入,如果F9是事後壓制,例如:觸發宏在文本+ F9

The patient has been diagnosed with DIA1 

,其次是F9鍵。

單詞應對F9鍵作出反應並運行宏DIA1,該宏將從鍵入的文本中刪除單詞「DIA1」並插入特定文本。

我該怎麼做?

+0

你的意思是當F9被按下時,它應該查找鍵入的最後一個單詞? – Ibo

回答

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。或者,您可以按照@Ibo建議的these steps將宏指定給F9。

解決方案:

1-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 
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