我对 Visual Basic 和宏很陌生。我一直在尝试做的是创建一个宏,它将查看整个文档并检查是否有任何字体是红色的;如果它是红色的,那么我想将红色字体更改为白色字体。
我知道我的代码是错误的,但谁能告诉我我做错了什么?
Sub red()
If Font.Color =wdColorRed Then
Font.Color = -603914241
End Sub
您可以使用以下相当快的方法(每张纸都不需要循环)。
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 中。
这将适用于选定的工作表,您可以简单地将其放入循环中并遍历工作簿中的所有工作表以全部更改它们。
是你要找的吗?
从这里复制@Todd 主要答案。
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