使用单元格作为条件格式的“模板”

使用单元格作为条件格式的“模板”

也许我很笨并且错过了一些技巧,但我正在寻找为条件格式创建一个示例 excel 文件。

我对条件格式规则的制定感到满意,但是在动态设置“格式”部分时遇到了问题。

在下面的例子中,我正在寻找突出显示的规则,如果方块包含“x”,则使用单元格 I4 的格式 - 这样,如果我将 I4 的格式更改为红色背景,则此规则将自动更新。

我查看了一下,似乎找不到类似“格式刷”之类的东西。这可能吗?

在此处输入图片描述

答案1

检查这个基于 VBA 的解决方案是否适合您。它仍然在内部创建所需的相同条件格式规则,但通过 VBA 代码,它现在根据 I4 和 I5 中单元格的颜色决定颜色索引。

此示例遵循与您的问题相同的范围。范围 B4:D6 用于应用条件格式并使用 I4 和 I5 中的参考颜色。

在工作表中,假设 Sheet1 按 。VBAALT + F11编辑器将打开。在左侧窗格中双击 Sheet1,然后在右侧代码编辑器中选择工作表对象(第一个下拉列表),然后选择更改事件(第二个下拉列表)。

其中将为您提供以下子程序占位符。

Private Sub Worksheet_Change(ByVal Target As Range)

End Sub 

在此子程序中放置以下 VBA 代码。

'On WorkSheet Change Event Check for Change in C5 and that too if X or O is entered in it.
If Target.Address = "$C$5" Then
    If UCase(Target) = UCase(Range("G4").Value) Or UCase(Target) = UCase(Range("G5").Value) Then
        'First clear the Conditional formatting at B4:D6

        Range("B4:D6").Select
        Selection.FormatConditions.Delete
        Range("C5").Select

        'Set the conditional formatting at B4:D6
        Range("B4:D6").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$5=$G$4"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior

            .Color = Range("I4").Interior.Color

        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("B4:D6").Select
        Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$5=$G$5"
        Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
        With Selection.FormatConditions(1).Interior

            .Color = Range("I5").Interior.Color

        End With
        Selection.FormatConditions(1).StopIfTrue = False
        Range("C5").Select

    End If

End If

保存并退出 VBA 编辑器。现在,每次更改单元格 C5 中的值时,代码都会检查它是否为 C5,以及其中是否输入了 X 或 O,并根据 I4 和 I5 的颜色重新创建适用于 B4:D6 的条件格式规则。

但是,在修改 I4 和/或 I5 中的背景颜色后,您需要在 C5 中重新输入值才能使此代码起作用。VBA 不提供任何背景颜色更改事件供本机捕获。但是,可以使用 VBA 代码再次捕获此类事件。

在此处输入图片描述

相关内容