2

Я хочу изменить желтые выделения в выделенном тексте (не во всем документе) на красные выделения. Этот 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

1 ответ1

1

Попробуйте сделать следующие изменения:

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

РЕДАКТИРОВАТЬ:

Этот альтернативный код работает на основе букв, а не на уровне слов. Таким образом, он должен изменить любые буквы с подсветкой на правильный цвет. Однако будет трудно отменить, так как вам нужно отменить каждую букву отдельно, а не все сразу.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .