2017-07-25 1 views
1

Je voudrais courir une certaine macro si un texte a été tapé et si F9 a été pressé par la suite, par exemple:macro Trigger au texte + F9

The patient has been diagnosed with DIA1 

, suivi de la touche F9. Word devrait réagir sur la touche F9 et exécuter la macro DIA1 qui effacerait le mot "DIA1" du texte tapé et insérer un certain texte.

Comment est-ce que je pourrais faire ceci?

+0

Voulez-vous dire quand F9 est pressé, il devrait chercher le dernier mot tapé? – Ibo

Répondre

1

Deux choses:

1- Solution trouve "DIA1" dans la dernière ligne, il ne vérifie pas le dernier mot. Si vous insistez sur le dernier mot est:

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 sont réservés afin que votre plus proche option est F8. Vous pouvez également affecter une macro à F9 en suivant these steps, comme suggéré par @Ibo.

Solution:

1-Bind F8 à votre macro

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

2- "Rechercher et remplacer" macro:

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

3-Si vous avez besoin de délier F8 :

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

Vous devrez définir la macro qui se déclenchera sur F9, puis lui affecter F9. Learn How

Supposons que le nom de cette macro soit ttt. Je suppose que lorsque vous appuyez sur F9, vous venez de taper le nom de la fonction à exécuter. Disons DIA1. C'est la structure que vous devriez suivre. Vous devez ajouter des lignes dont vous avez besoin pour remplacer la chaîne DIA1 etc, mais cela fonctionne. Je me suis testé

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