MS word macro: como alterar os destaques de uma cor específica para outra - dentro do texto selecionado?

1

Desejo alterar os realces amarelos no texto selecionado (não no documento inteiro) para realces em vermelho. Esse VBA altera as cores realçadas, mas não para no texto selecionado (ele também alterou os realces abaixo do texto selecionado).

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
    
por Lisa 23.01.2016 / 10:07

1 resposta

1

Tente com as seguintes alterações:

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

EDITAR:

Essecódigoalternativofuncionaemumabaseporletra,emvezdeumabaseporpalavra.Comotal,devealterarqualquerletracomdestaqueparaacorcorreta.Será,noentanto,difícildesfazercomovocêprecisadesfazercadaletraindividualmente,emvezdetudodeumasóvez.

SubSwitchHighlightsColorPerLetter()DimrAsRangeSetr=Application.Selection.RangeWithr.Find.Highlight=TrueDoWhile.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
    
por 23.01.2016 / 10:47