OK, give the following a whirl:
Sub ColouredStrikethrough()
Application.ScreenUpdating = False
ActiveWindow.View.ShowFieldCodes = True
Dim SngWdth As Single, i As Long
Dim StrTxt As String, StrTmp As String
Dim Fld As Field, Rng As Range
With Selection.Range
While .Characters.Last.Information(wdVerticalPositionRelativeToPage) <> _
.Characters.First.Information(wdVerticalPositionRelativeToPage)
.MoveEnd wdCharacter, -1
Wend
SngWdth = .Characters.Last.Information(wdHorizontalPositionRelativeToPage) - _
.Characters.First.Information(wdHorizontalPositionRelativeToPage)
StrTxt = .Text
For i = 1 To Len(StrTxt)
StrTmp = StrTmp & Chr(150)
Next
Set Fld = .Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty, _
PreserveFormatting:=False, Text:="EQ \o(" & StrTxt & "," & StrTmp & ")")
Fld.Code.Characters.Last = ChrW(8203)
Set Rng = Fld.Code
With Rng
.Font.ColorIndex = wdRed
.Start = .Start + InStr(.Text, StrTxt) - 1
.End = .Start + Len(StrTxt)
.Font.ColorIndex = wdAuto
End With
Set Rng = Fld.Code
With Rng
.Start = .Start + InStr(.Text, StrTmp) - 1
.End = .Start + Len(StrTmp)
.FitTextWidth = SngWdth
End With
.Fields.Update
End With
ActiveWindow.View.ShowFieldCodes = False
Application.ScreenUpdating = True
End Sub