Hallo Raphael,
versprechen kann ichs nicht, aber probier nochmal diesen leicht abgewandelten Code. Der prüft zusätzlich zum Datum, ob dieses am Ende eines Absatzes steht.
Sub Markieren()
Dim wrd As Range, x As String, y As String, i As Long, cnt As Long
cnt = ActiveDocument.Words.Count
For Each wrd In ActiveDocument.Words
i = i + 1
If wrd.Bold = True Then wrd.HighlightColorIndex = wdBrightGreen
If wrd Like "Document*" Then wrd.HighlightColorIndex = wdPink
If i < cnt - 2 Then x = wrd & wrd.Next(wdWord) & wrd.Next(wdWord).Next(wdWord)
If i < cnt - 3 Then y = x & wrd.Next(wdWord).Next(wdWord).Next(wdWord)
If IsDate(y) Then
If wrd.Next(wdWord).Next(wdWord).Next(wdWord).End = wrd.Next(wdWord).Next(wdWord).Next(wdWord).Paragraphs(1).Range.End Then
ActiveDocument.Range(wrd.Start, wrd.Next(wdWord).Next(wdWord).Next(wdWord).End).HighlightColorIndex = wdYellow
End If
ElseIf IsDate(x) Then
If wrd.Next(wdWord).Next(wdWord).End = wrd.Next(wdWord).Next(wdWord).Paragraphs(1).Range.End Then
ActiveDocument.Range(wrd.Start, wrd.Next(wdWord).Next(wdWord).End).HighlightColorIndex = wdYellow
End If
End If
Next wrd
MsgBox "Fertig!"
End Sub
Eine Uhrzeit darf dann aber nicht hinter dem Datum stehen, denn dann steht das Datum selbst nicht am Ende des Absatzes und wird deshalb nicht markiert. Das kannst du aber durch weitere Next - Eigenschaften ergänzen.
Bezüglich des englischen Formats musst du vor dem Ausführen des Makros das Datums- und Zeitformat in den Systemeinstellungen von Windows auf Englisch USA stellen, dann sollte die IsDate-Funktion auch diese Daten als gültig ausweisen und markieren. Zumindest wenn das Format wie von dir angegeben 26 October 2020 lautet.
Gruß Mr. K.
|