2013-08-19 4 views
0

J'essaye de créer une macro qui recherchera le document et mettra en évidence chaque occurrence d'un espace, le mot "pour", et alors un autre espace comme ceci "pour" utilisant le code modifié de ce site, j'ai obtenu ceci:Mettre en surbrillance le texte dans la macro VBA pour Microsoft Word

Sub findfunction() 
If (findHL(ActiveDocument.Content, "[ for ]")) = True Then MsgBox "Highlight Comma's and Coordinating Conjunctions Done", vbInformation + vbOKOnly, "Highlight Result" 
End Sub 

Function findHL(r As Range, s As String) As Boolean 
Options.DefaultHighlightColorIndex = wdYellow 
r.Find.Replacement.Highlight = True 
r.Find.Execute MatchWholeWord:=True, FindText:=s, MatchWildcards:=True, Wrap:=wdFindContinue, Format:=True, replacewith:="", Replace:=wdReplaceAll 
findHL = True 
End Function 

le problème est qu'il met en évidence toutes les occurrences de juste la lettre f, o et r. Je ne veux que surligner quand la séquence "pour" est trouvée, pas les caractères individuels. Je suis nouveau à ce sujet, et je ne sais pas où aller à partir d'ici, donc toute aide serait appréciée. Merci: D

+0

vérifiez les [règles génériques ici] (http://www.gmayor.com/replace_using_wildcards.htm) –

Répondre

0

Les caractères génériques ne sont pas nécessaires. La chaîne recherchée doit être "pour" et MatchWildcards: = False.

Sub findfunction() 
    If (findHL(ActiveDocument.Content, " for ")) = True Then 
     MsgBox "Highlight Comma's and Coordinating Conjunctions Done", vbInformation + vbOKOnly, "Highlight Result" 
    End If 
End Sub 

Function findHL(r As Range, s As String) As Boolean 
    Options.DefaultHighlightColorIndex = wdYellow 
    r.Find.replacement.Highlight = True 
    r.Find.Execute MatchWholeWord:=True, FindText:=s, MatchWildcards:=False, Wrap:=wdFindContinue, Format:=True, replacewith:="", Replace:=wdReplaceAll 
    findHL = True 
End Function 
Questions connexes