Visual Basic宏 - 改变特定文本的颜色

时间:2013-05-18 17:28:19

标签: vba ms-word word-vba

我是视觉基础和宏的新手。我一直在尝试做的是创建一个宏,将查看整个文档,并检查是否有任何字体是红色;如果它是红色,那么我想将红色字体更改为白色字体。

我知道我的代码错了但是有谁能告诉我我做错了什么?

Sub red()

  If Font.Color =wdColorRed Then
  Font.Color = -603914241
End Sub

2 个答案:

答案 0 :(得分:3)

您可以使用以下相当快的步骤(每张纸不需要循环)。

Sub Macro1()
Application.ScreenUpdating = False 'disable the screen from updating, i.e, avoid excel redrawing the screen after each color change we make
Application.FindFormat.Font.Color = 255
Application.ReplaceFormat.Font.Color = 16777215
Cells.Select
Selection.Replace What:="", Replacement:="", MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True
Application.ScreenUpdating = True 'enable screen updating
End Sub

字体颜色可能有点棘手。因此,要找出您想要的颜色,请选择一个单元格并将颜色更改为您需要知道其颜色的颜色。然后转到开发人员屏幕并查看 - >立即窗口(或按Ctrl + G)。然后在立即窗口中(现在应该在屏幕的底部,使用您想知道颜色的单元格仍然选中,输入

? Selection.Font.Color

这将为您提供您感兴趣的颜色。然后将这些数字放在上面的Application.Find / ReplaceFormat.Font.Color中。

这将适用于所选的工作表,您可以简单地将其抛入循环并迭代工作簿中的所有工作表以更改它们。

答案 1 :(得分:0)

这是你在找什么?

here @Todd Main Answer复制。

Sub ChangeColorWithReplace()
    Selection.Find.ClearFormatting
    Selection.Find.Font.Color = wdColorRed
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = -603914241
    With Selection.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchKashida = False
        .MatchDiacritics = False
        .MatchAlefHamza = False
        .MatchControl = False
        .MatchByte = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub