Ich verwende RegEx mit VBA-Makros, um Übereinstimmungen in einer Word-Datei zu finden, da die Suchfunktion in einigen Fällen nicht ausreicht. Übereinstimmungen sollten markiert werden (funktioniert) und ein Kommentar sollte angebracht werden. Wenn ich jedoch Kommentare (oder Kommentare bereits vorhanden) hinzufüge, wird der Match.FirstIndex für jeden vorherigen Kommentar um eins überschrieben. Kommentare mit demselben Text zählen wie eins.Word VBA mit RegEx und Kommentare
Warum ist das? Wie man es repariert?
Vereinfachtes Beispiel:
Sub Mark_QuestionAndExpressionMarks()
Dim Match As Match
Dim Matches
Dim regEx As New regExp
regEx.Pattern = "\?|!" 'regex for questionmark or expressionmark
regEx.IgnoreCase = False
regEx.Global = True
Set Matches = regEx.Execute(ActiveDocument.Content.Text) ' or ActiveDocument.Content.Text
For Each Match In Matches
Call HighlightAndComment(ActiveDocument.range(Match.FirstIndex, Match.FirstIndex + Len(Match.Value)), "Question or Expressionmark")
// problem here as Match is realized correctly but the FirstIndex is off
Next
End Sub
Sub HighlightAndComment(WordOrSentence As Object, comment As String)
WordOrSentence.HighlightColorIndex = wdYellow
Call ActiveDocument.range.Comments.Add(WordOrSentence, comment)
End Sub
Ist es Word oder Excel? Wenn es beides ist, wie ist jeder involviert? – Deduplicator
Nur Word, kein Excel – Nandmp
Also, das Problem ist, dass das Highlight auf den Charakter vor '?' Oder '!' Mit dem 2. und folgenden Übereinstimmungen gesetzt ist, oder? Das ist wirklich seltsam, weil die Übereinstimmung FirstIndex korrekt berechnet wird. –