在Excel上为文本值创建条件格式化宏

时间:2017-01-19 12:11:51

标签: excel vba excel-vba conditional-formatting

我经常需要在我的Excel工作表上创建条件格式规则,而不是总是在相同的范围内,以根据所写的内容格式化文本颜色。

最常见的情况是将范围内的所有单元格设置为“有效”绿色和粗体,“无效”为红色和粗体。

我尝试使用Developer选项卡上的Record Macro功能创建此宏,但它不起作用,代码为空。

由于我对VBA一无所知,我想知道是否有人可以帮我创建这个宏。

说明:

  • 没有固定范围,需要捕捉所选范围;
  • 基于文字的格式,如果“有效”为绿色和粗体,如果“无效”为红色和粗体。
  • 仅限一张。

[解决]

Sub EffectiveNot()
'
' EffectiveNot Macro
'
    Dim rStart As Range
    Set rStart = Selection
    Selection.FormatConditions.Add Type:=xlTextString, String:="Effective", _
        TextOperator:=xlContains
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .Color = -11489280
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
    Selection.FormatConditions.Add Type:=xlTextString, String:="Not effective", _
        TextOperator:=xlContains
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Font
        .Bold = True
        .Italic = False
        .Color = -16776961
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End Sub

1 个答案:

答案 0 :(得分:1)

您是否有机会查看ThisWorkbook - 模块?宏录制器每天运行一个新的空模块,然后将代码转储到那里......

这基本上是宏记录器在我清理了一下之后想出来的。您可以随意将Selection交换为更适合您使用的范围对象。

Option Explicit

Sub format()

    With Selection
        With .FormatConditions
            .Delete

            With .Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Not Effective""")
                With .Font
                    .Color = vbRed
                    .Bold = True
                End With
                .StopIfTrue = False
            End With

            With .Add(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""Effective""")
                With .Font
                    .Color = vbGreen
                    .Bold = True
                End With
                .StopIfTrue = False
            End With
        End With
    End With

End Sub