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

使用Excel VBA在另一个工作簿上基于不同规则应用条件格式,excel,vba,formatting,conditional,Excel,Vba,Formatting,Conditional,我有一个大型数据库,我正在运行一个vba脚本,以便创建许多不同的工作簿,其中只包含来自完整数据库的一些示例数据。这很好,我使用一个矩阵来获取所有相关条目,然后将整个矩阵粘贴到新工作簿的定义范围内(而不是将一个单元格逐个从一个工作表复制到另一个工作表)。我的问题是现在需要为条件格式添加两个规则 我正在寻找一些东西,例如: Application.Worksheets("Database").Cells(k, ColumnOfInterest).Select With Selection

我有一个大型数据库,我正在运行一个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。不幸的是,这段代码不起作用,只为条件格式创建了一条规则。

.FormatConditions.Delete删除以前的formatcondition。如果在第二部分中删除.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