Hi Greg, I've added the new lines of code to my macro you have provided. If I leave the Err Handler bit in it makes all my auto cross refs highlighted when they shouldn't be, but when I comment them out its throwing up an Error 5825 Object has been deleted. I have marked the line of code red in the below code. The last bit of the code is supposed to leave any auto cross refs/fields unchanged and only highlight the manual ones. Any idea why this might be happening?
Code:
'On Error GoTo Err_Handler:
For Each oPara In ActiveDocument.Paragraphs 'Highlights missing punctuation at end of paragraphs
With oPara.Range
If .Information(wdWithInTable) Or .Font.AllCaps Or .Characters.First.Font.Bold Or Len(.text) < 3 Then
GoTo NextFor
Else
If Not .Characters.Last.Previous Like "*[.!?:;,]" Then
Select Case True
Case .Characters.Last.Previous.Fields.count = 1
If Not .Characters.Last.Previous.Fields(1).Result = "]" Then
.Words.Last.Previous.Words(1).HighlightColorIndex = wdBrightGreen
End If
Case Else
If Not .Characters.Last.Previous Like "]" Then
.Words.Last.Previous.Words(1).HighlightColorIndex = wdBrightGreen
End If
End Select
End If
Select Case .Words.Last.Previous.Words(1)
Case "and", "but", "or", "then", "plus", "minus", "less", "nor"
Set Rng = .Words.Last '.Previous.Words(1)
Rng.MoveStartUntil cSet:=" " & Chr(160), count:=-10
Set Rng = Rng.Characters.First.Previous.Previous
If Rng.text = ";" Then
'if oPara ends with these words and have semi-colon before them do nothing no highlight else
.Words.Last.Previous.Words(1).HighlightColorIndex = wdNoHighlight
If Rng.text = "," Then
'if oPara ends with these words and have semi-colon before them do nothing no highlight else
.Words.Last.Previous.Words(1).HighlightColorIndex = wdPink
End If
End If
Case Else
End Select
End If
End With
NextFor:
Next
'lbl_Exit:
'Exit Sub
'Err_Handler:
'MsgBox Err.Number & " - " & Err.Description
' oPara.Range.Select
'Resume
Options.DefaultHighlightColorIndex = wdNoHighlight 'Don't highlight anything already in fields eg cross refs and square brackets
ActiveWindow.View.ShowFieldCodes = True
.ClearFormatting
.MatchWildcards = False
.text = "^d"
.Execute Replace:=wdReplaceAll
ActiveWindow.View.ShowFieldCodes = False
End With
Case Else
End Select
End With
Next Rng