How do I change the color of Strikethrough without changing the color of the text?

Anonymous
2010-10-06T19:10:44+00:00

Hello,

I have Word 2007. I want to achieve red Strikethrough upon normal black text.

I would be grateful to know how to do this, or if, as I suspect, it is not possible, then I would also be interested to know why Microsoft has not provided this quite obviously needed function.

I look forward to hearing from you.

Regards,

Robert.

Microsoft 365 and Office | Word | For home | Windows

Locked Question. This question was migrated from the Microsoft Support Community. You can vote on whether it's helpful, but you can't add comments or replies or follow the question.

0 comments No comments
Answer accepted by question author
Anonymous
2010-11-30T09:36:24+00:00

Crossing something out electronically is a nonsense; period. That the facility is even made available is a questionable use of resources. If you really want to strikethrough in a colour other than the text colour, you must use fields (see http://wordfaqs.mvps.org/Overbar.htm) to overlay your text with struckthrough spaces, and format the spaces in whatever colour you want.

Was this answer helpful?

60+ people found this answer helpful.
0 comments No comments

119 additional answers

Sort by: Oldest
  1. Stefan Blom 351.7K Reputation points MVP Volunteer Moderator
    2016-12-30T01:02:49+00:00

    I don't see a simple way to create a macro that creates the EQ field (which doesn't mean that creating a macro would be impossible).

    In the long run, posting a suggestion for http://word.uservoice.com is probably a better idea (or you can vote for any existing suggestions).

    Was this answer helpful?

    0 comments No comments
  2. Paul Edstein 82,871 Reputation points Volunteer Moderator
    2016-12-30T03:21:59+00:00

    You could use a macro such as the following to apply red underlining to a Selection:

    Sub ColoredUnderline()

    Application.ScreenUpdating = False

    Dim StrTxt As String, Fld As Field, Rng As Range

    ActiveWindow.View.ShowFieldCodes = True

    With Selection

      StrTxt = .Text

      Set Fld = .Fields.Add(Range:=Selection.Range, Type:=wdFieldEmpty, _

        PreserveFormatting:=False, Text:="EQ \s\do8(\f(" & StrTxt & ",))")

      .MoveLeft wdCharacter, 2

      .Delete

      Set Rng = Fld.Code

      With Rng

        .Font.ColorIndex = wdRed

        .Start = .Start + InStr(.Text, StrTxt) - 1

        .End = .Start + Len(StrTxt)

        .Font.ColorIndex = wdAuto

      End With

      .Fields.Update

    End With

    ActiveWindow.View.ShowFieldCodes = False

    Application.ScreenUpdating = True

    End Sub

    You could of course, change both the underline colour, currently set via .Font.ColorIndex = wdRed, and the text colour, currently set via .Font.ColorIndex = wdAuto. Because the field displays the underlining below the text instead of running through character descenders, line heights will increase slightly. Changing the 8 in the code affects how high above/below the line the underlining will be.

    Notes: If the range spanned by an EQ field exceeds the amount that be displayed on a single line or spans a paragraph break, the result will be an 'Error!' display in the document. Similarly, if the range spanned by ab EQ field includes any line-wrapping or a manual line break, the entire field will be pushed to the next line - a manual linebreak will be displayed as a narrow vertical rectangle in the output.

    Was this answer helpful?

    0 comments No comments
  3. Suzanne S Barnhill 279.1K Reputation points MVP Volunteer Moderator
    2016-12-30T03:28:13+00:00

    You can change the color of underlines separately from the text through the UI (in the Font dialog), but the OP wanted to change the color of strikethrough.

    Was this answer helpful?

    0 comments No comments
  4. Paul Edstein 82,871 Reputation points Volunteer Moderator
    2016-12-30T04:22:19+00:00

    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

    Was this answer helpful?

    0 comments No comments