使用MS Word VBA如何使用突出显示颜色

时间:2015-05-18 04:13:47

标签: vba ms-word office-interop word-vba

假设MS Word 2007/2010文档中有以下文字,我有" testA"用蓝色突出显示" testB"用绿色突出显示:"这是testA和testB。"。我想以编程方式将testA替换为其背景颜色索引2,并将testB替换为其背景颜色索引11. Ref:WdColorIndex Enumeration

我尝试过以下但有两个问题:

  1. 将testA替换为0(默认背景的颜色索引),testB替换为2(testA的颜色索引)
  2. 虽然循环没有结束
  3. 我希望被替换的文字是:"这是2和11"。相反,我得到了:"这是0和2"。

    使用VBA或C#的任何更正都可以。

    Sub ReplaceHighlightedTextColor()
    
        With Selection.Find
            .ClearFormatting
            .Highlight = True
            While .Execute(Forward:=True, Format:=True, ReplaceWith:=CStr(Selection.FormattedText.HighlightColorIndex))
            Wend
        End With
    
    End Sub
    

1 个答案:

答案 0 :(得分:3)

试试这个:

Sub ReplaceHighlightedTextColor()

    Dim rng As Range

    Set rng = Selection.Range

    With rng.Find

        .ClearFormatting
        .Highlight = True

        While .Execute(Forward:=True, Format:=True) 
            'Note: 'rng' is now the range containing the matched content
            rng.Text = rng.FormattedText.HighlightColorIndex
        Wend

    End With

End Sub