2016-08-04 71 views
0

Ich verwende RegEx-Suche, um das bestimmte Wort in meinem MS-Word-Dokument herauszufinden, und das Suchergebnis wird in einer Variablen gespeichert. Mein Problem ist, dass ich einen benutzerdefinierten Stil nur für das Suchergebnis anwenden möchteAnwenden von Stil auf bestimmte Wörter

Eingabe: weltweit [1,2]. Vor, während oder nach dem [1,3,4] [1,2,4,5] [1,2,6,7,8] [1,2] [1,2]

Ich benutze der folgende Code

Sub RegexReplaces() 
    Set matches = New regExp 
    Dim Sure As Integer 
    Dim rng As Range 
    matches.Pattern = "([\[\(][0-9, -]*[\)\]])" 
    matches.Global = True 
    Dim mat As MatchCollection 
    Set mat = matches.Execute(ActiveDocument.Range) 
    For Each m In mat 
     Sure = MsgBox("Are you sure?" + m, vbOKCancel) 
     If Sure = 1 Then 
      m.Style = ActiveDocument.Styles("Heading 1") 'this is the error line 
     Else 
      MsgBox "not1111" 
     End If 
    Next m 
End Sub 

Antwort

1

der For Each m In mat Schleife iteriert über jedes Element in der Matte Sammlung. M ist keine Reichweite. Sie müssen einen Bereich festlegen, der bei m.FirstIndex beginnt und bei m.FirstIndex + m.Length endet. Dann müssen Sie den Bereich auswählen und Selection.Style verwenden, um den Bereich zu stylen.

Sub RegexReplaces() 
    Set matches = New regExp 
    Dim Sure As Integer 
    Dim rng As Range 
    matches.Pattern = "([\[\(][0-9, -]*[\)\]])" 
    matches.Global = True 
    Dim mat As MatchCollection 
    Set mat = matches.Execute(ActiveDocument.Range) 
    For Each m In mat 
     Sure = MsgBox("Are you sure?" + m, vbOKCancel) 
     If Sure = 1 Then 

      Set rng = ActiveDocument.Range(Start:=m.FirstIndex, End:=m.Length + m.FirstIndex) 
      rng.Select 
      Selection.Style = ActiveDocument.Styles("Heading 1") 
     Else 
      MsgBox "not1111" 
     End If 
    Next m 
End Sub 
+0

Vielen Dank mit der Antwort, wie ich wirklich besorgt war, wie dies zu tun ist. Diese Antwort bedeutet mir sehr viel. – Kevin

+0

Ich bin froh, dass ich helfen konnte! Danke, dass du meine Antwort akzeptierst. –