2012-02-22 11 views
5

मेरा इरादा शब्दों की एक श्रृंखला खोजने और उन्हें हाइलाइट करने के लिए एक बहुत ही बुनियादी मैक्रो बनाना है। दुर्भाग्यवश, मुझे नहीं पता कि एक चरण में कई शब्द कैसे करें। उदाहरण के लिए, निम्नलिखित कोड काम करता है:एकाधिक शब्द को हाइलाइट करने के लिए माइक्रोसॉफ्ट वर्ड मैक्रो

Sub Macro1() 
' 
' Macro1 Macro 
' 
' 
    Selection.Find.ClearFormatting 
    Selection.Find.Replacement.ClearFormatting 
    Selection.Find.Replacement.Highlight = True 
    With Selection.Find 
     .Text = "MJ:" 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = True 
     .MatchCase = True 
     .MatchWholeWord = False 
     .MatchWildcards = False 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
    End With 
    Selection.Find.Execute Replace:=wdReplaceAll 
End Sub 

हालांकि, अगर मैं एक .Text = लाइन में जोड़ने के लिए, तो MJ: नजरअंदाज कर दिया है। कोई विचार?

उत्तर

3

यदि आप केवल कुछ ही शब्दों की तलाश कर रहे हैं तो एक ही मैक्रो के भीतर कई खोज और प्रतिस्थापन कर रहे हैं जो आप चाहते हैं उसे पूरा करेंगे। उदाहरण के लिए, निम्नलिखित पीले रंग में "target1" और "target2"

Sub HighlightTargets() 

' --------CODE TO HIGHLIGHT TARGET 1------------------- 
    Options.DefaultHighlightColorIndex = wdYellow 
    Selection.Find.ClearFormatting 
    Selection.Find.Replacement.ClearFormatting 
    Selection.Find.Replacement.Highlight = True 
    With Selection.Find 
     .Text = "target1" 
     .Replacement.Text = "target1" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = True 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchWildcards = False 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
    End With 
    Selection.Find.Execute Replace:=wdReplaceAll 

' --------CODE TO HIGHLIGHT TARGET 1------------------- 
    Options.DefaultHighlightColorIndex = wdYellow 
    Selection.Find.ClearFormatting 
    Selection.Find.Replacement.ClearFormatting 
    Selection.Find.Replacement.Highlight = True 
    With Selection.Find 
     .Text = "target2" 
     .Replacement.Text = "target2" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = True 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchWildcards = False 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
    End With 
    Selection.Find.Execute Replace:=wdReplaceAll 
End Sub 

वैकल्पिक रूप से निम्नलिखित कोड आपको एक लाइन जो साथ काम करना आसान हो सकता में उजागर करने के लिए सभी नियमों को जोड़ने दूँगी की सभी घटनाओं पर प्रकाश डाला जाएगा।

Sub HighlightTargets2() 

Dim range As range 
Dim i As Long 
Dim TargetList 

TargetList = Array("target1", "target2", "target3") ' put list of terms to find here 

For i = 0 To UBound(TargetList) 

Set range = ActiveDocument.range 

With range.Find 
.Text = TargetList(i) 
.Format = True 
.MatchCase = True 
.MatchWholeWord = False 
.MatchWildcards = False 
.MatchSoundsLike = False 
.MatchAllWordForms = False 

Do While .Execute(Forward:=True) = True 
range.HighlightColorIndex = wdYellow 

Loop 

End With 
Next 

End Sub 
+0

धन्यवाद! वह लूप बिल्कुल वैसा ही था जिसे मैं ढूंढ रहा था। काश मैं कह सकता हूं कि मैं समझता हूं कि यह कैसे काम करता है, लेकिन अगर यह काम करता है तो मैं खुश हूं! –

संबंधित मुद्दे