2016-12-07 332 views
0

如何编码多个条件格式?目前,我只能编码一个条件格式。如何在VBA编码中添加多个条件格式 - EXCEL

我的代码:

Sub Button5_Click() 
Dim ws As Worksheet 
Dim i As Integer 
Set ws = Sheets("COMPARISON") 
i = 1 

With Range("I2:I146").FormatConditions.Add(_ 
    Type:=xlExpression, _ 
    Formula1:="=((($I2-$E2)/$E2)*100) > 20") 
    .Interior.Color = RGB(255, 0, 0) 

End With 

Do Until i = 300 
    If ws.Range("I" & i).DisplayFormat.Interior.Color = RGB(255, 0, 0) Then 
     msg = "I" & i & " -" & " Data has changed" 
     MsgBox msg 
    End If 
i = i + 1 
Loop 

End Sub 

我已经设法创造一个条件格式,其中如果I2的值 - E2是20%以上,填充单元格的红色。

我想创建两个条件格式编排这样其中

1)如果所述细胞是0填充细胞黑和设置字体白色

2)如果小区I2是< E2但不为0填满细胞黄色。

有人可以帮助我与其他2条件格式?非常感谢。

+2

难道你只是记录条件? – nightcrawler23

+0

我的“老板”不想记录条件的想法.... – Joel

+0

另外,如果我记录的条件格式有太多的代码在vba中,我不知道哪些代码将是必要的,因为我'在excel vba中,赞成/好。因此,从头开始编写vba代码,我有点了解代码 – Joel

回答

0

我刚刚复制了With块并应用了您拥有的条件。你可以试试这个:

Sub Button5_Click() 
Dim ws As Worksheet 
Dim i As Integer 
Set ws = Sheets("COMPARISON") 
i = 1 

With Range("I2:I146").FormatConditions.Add(_ 
    Type:=xlExpression, _ 
    Formula1:="=((($I2-$E2)/$E2)*100) > 20") 
    .Interior.Color = RGB(255, 0, 0) 

End With 

With Range("I2:I146").FormatConditions.Add(_ 
    Type:=xlCellValue, _ 
    Operator:=xlEqual, _ 
    Formula1:="0") 
    .Interior.Color = RGB(0, 0, 0) 
    .Font.Color = RGB(255, 255, 255) 
End With 

With Range("I2:I146").FormatConditions.Add(_ 
    Type:=xlExpression, _ 
    Formula1:="=AND($I2<$E2, $I2<>0)") 
    .Interior.Color = RGB(255, 255, 0) 
End With 

Do Until i = 300 
    If ws.Range("I" & i).DisplayFormat.Interior.Color = RGB(255, 0, 0) Then 
     msg = "I" & i & " -" & " Data has changed" 
     MsgBox msg 
    End If 
i = i + 1 
Loop 

End Sub 
+0

@Joel将我的答案标记为正确答案会很好。 :) –

+0

当然:)再次感谢您的帮助。 – Joel