使用Excel VBA根据不同的规则在另一个工作簿上应用条件格式

时间:2014-07-29 20:37:47

标签: excel vba formatting conditional

我有一个大型数据库,我正在运行一个vba脚本,以便创建许多不同的工作簿,这些工作簿只包含完整数据库中的一些示例数据。这很好用,我使用矩阵来获取所有相关条目,然后将整个矩阵粘贴到新工作簿的定义范围内(而不是逐个单元格从一个工作表复制到另一个工作表)。我现在的问题是我需要为条件格式添加两条规则。

我正在寻找以下内容:

 Application.Worksheets("Database").Cells(k, ColumnOfInterest).Select

  With Selection
    .FormatConditions.Delete
    .FormulaR1C1 = "=RC[-3] =""A"""
    .FormatConditions.Add Type:=xlExpression, Formula1:=.FormulaR1C1Local
    .FormatConditions(1).Interior.ColorIndex = 6
    .Formula = ""

End With

  With Selection
    .FormatConditions.Delete
    .FormulaR1C1 = "=RC[0] ="""""
    .FormatConditions.Add Type:=xlExpression, Formula1:=.FormulaR1C1Local
    .FormatConditions(1).Interior.ColorIndex = 5
    .Formula = ""

End With

换句话说,当用户在左边的第3个单元格中选择“A”时,相关单元格的颜色应为颜色索引6,如果感兴趣的单元格为空,则颜色代码为5.遗憾的是,此代码不起作用,只为条件格式创建一条规则。

1 个答案:

答案 0 :(得分:2)

.FormatConditions.Delete删除以前的格式条件。如果您在第二部分中删除.FormatConditions.Delete并将.FormatConditions(1)更改为.FormatConditions(2)它应该有效:

Application.Worksheets("Database").Cells(k, ColumnOfInterest).Select

With Selection

    .FormatConditions.Delete

    .FormulaR1C1 = "=RC[-3] =""A"""
    .FormatConditions.Add Type:=xlExpression, Formula1:=.FormulaR1C1Local
    .FormatConditions(1).Interior.ColorIndex = 6
    .Formula = ""

    .FormulaR1C1 = "=RC[0] ="""""
    .FormatConditions.Add Type:=xlExpression, Formula1:=.FormulaR1C1Local
    .FormatConditions(2).Interior.ColorIndex = 5
    .Formula = ""

End With