web-dev-qa-db-ja.com

MS Wordマクロ:ハイライトを特定の色から別の色に変更する方法—選択したテキスト内?

選択したテキスト(ドキュメント全体ではない)の黄色のハイライトを赤いハイライトに変更したい。このVBAは強調表示された色を変更しますが、選択したテキストで停止しません(選択したテキストの下の強調表示も変更します)。

Sub SwitchHighlightsColor()
    Dim r As Range
    Set r = ActiveDocument.Range

    With r.Find
        .Highlight = True
        .Forward = True
        Do While .Execute(FindText:="", Forward:=True) = True
            If r.HighlightColorIndex = wdYellow Then   ' Highlight color you want to change
                r.HighlightColorIndex = wdRed          ' the new Highlight color you want to have
                r.Collapse 0
            End If
        Loop
    End With
End Sub
3
Lisa

次の変更を試してください。

Sub SwitchHighlightsColor()
    Dim r As Range
    Set r = Application.Selection.Range

    With r.Find
        .Highlight = True

        Do While .Execute(FindText:="") And r.InRange(Application.Selection.Range)
            If r.HighlightColorIndex = wdYellow Then   ' Highlight color you want to change
                r.HighlightColorIndex = wdRed          ' the new Highlight color you want to have
                r.Collapse 0
            End If
        Loop
    End With
End Sub

enter image description here

enter image description here

enter image description here

編集:

この代替コードは、単語ごとではなく、文字ごとに機能します。そのため、強調表示された文字を正しい色に変更する必要があります。ただし、一度にすべてを元に戻すのではなく、各文字を個別に元に戻す必要があるため、元に戻すのは困難です。

Sub SwitchHighlightsColorPerLetter()
    Dim r As Range
    Set r = Application.Selection.Range

    With r.Find
        .Highlight = True

        Do While .Execute(FindText:="") And r.InRange(Application.Selection.Range)
            For Each x In r.Characters
                If x.HighlightColorIndex = wdYellow Then   ' Highlight color you want to change
                    x.HighlightColorIndex = wdRed          ' the new Highlight color you want to have
                    x.Collapse 0
                End If
            Next
        Loop
    End With
End Sub
3
Jonno