条件格式:全局格式定义?

时间:2015-01-07 20:33:39

标签: excel vba excel-vba conditional-formatting

让我说我有Sheet1在哪里

    A    B
1   foo  foo
2   bar  bar

和ReferenceSheet在哪里

    A
1   bar  <-- cell is formatted with red background
2   foo  <-- cell is formatted with blue background

和所有其他编程示例一样,&#34; bar&#34;和&#34; foo&#34;是任意占位符值。 :)

我想使Sheet1中的每个单元格(A1:D4)与ReferenceSheet(A1:A2)中的定义单元格的值匹配,单元格将自动复制定义单元格的格式。 / p>

因此,继续上面的例子,Sheet1的背景颜色将被格式化为

    A    B
1   bl   bl
2   red  red

但是如果我将ReferenceSheet的格式更改为

    A
1   bar  <-- cell is formatted with pink background
2   foo  <-- cell is formatted with black background

Sheet1的背景格式将更新为

    A    B
1   blk  blk
2   pk   pk

如果可能的话,如何实现这个目标呢?

==

*我想在工作表中定义我的格式(而不是在Visual Basic代码中),以便创建更多用户可访问的格式定义。如果这不是一个选项,Visual Basic(以及全局)定义将是我的下一个选择。应用于每个单元格的批量复制条件格式将是我的最后选择,尽管找到类似于Microsoft Word中的样式的样式抽象选项会使其成为更加苍白的选择。

1 个答案:

答案 0 :(得分:0)

Worksheet_Change Sub可以满足您的需求:

Private Sub Worksheet_Change(ByVal Target As Range)
    'Place Sub in only the Reference Worksheet

   'Do nothing if more than one cell is changed or content deleted
   If Target.Cells.Count > 1 Or IsEmpty(Target) Then Exit Sub

   With Sheets("Sheet1").Range("DefineRange").FormatConditions.Modify(Type:=xlCellValue, Operator:=xlEqual, Formula1:="=" & Target.Value)
     .Interior.Color = Target.Interior.Color
   End With

End Sub

编辑:我使用.Modify,因为我假设如果单元格等于某个值,您将已经指定了条件格式。如果要添加新的条件格式设置规则,请改用.Add