Excel VBA更改单元格颜色

时间:2018-12-17 19:21:06

标签: excel vba ms-office

我试图获取U列中所有不等于2.04或3.59的单元格以更改单元格颜色。

代码如下:

Private Sub Cell_Color_Change()

For Each cell In Range("U2:U19004")
    If cell.Value <> 2.04 Or 3.59 Then cell.Interior.ColorIndex = 3
    Next cell

End Sub

由于某些原因,该代码将整个列变为红色。 我尝试使用条件格式,发生了同样的事情。 请帮忙。谢谢!

3 个答案:

答案 0 :(得分:2)

  1. 条件格式将执行以下操作:
    一种。使用公式:ch/qos/logback/core/filter/Filter
    b。选择您的填充颜色
    C。将其应用于ch.qos.logback.core.filter.Filter

  2. 但是如果要编写代码,则if应该是:

    AND(U2<>2.04,U2<>3.59)

答案 1 :(得分:2)

更正您的ANDOR

Private Sub Cell_Color_Change()
    For Each cell In Range("U2:U19004")
        If cell.Value <> 2.04 And cell.Value <> 3.59 Then cell.Interior.ColorIndex = 3
    Next cell
End Sub

enter image description here

EDIT#1:

要查找四舍五入到两位十进制数字的值,请尝试以下替代方法:

Private Sub Cell_Color_Change()

    Dim cv As Variant

    For Each cell In Range("U2:U19004")
        cv = Application.WorksheetFunction.Round(cell.Value, 2)
        If cv <> 2.04 And cv <> 3.59 Then cell.Interior.ColorIndex = 3
    Next cell
End Sub

答案 2 :(得分:0)

使用VBA设置条件格式。

Option Explicit

Private Sub set_Cell_Color_Change()

    With Range("U2:U19004")
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, Formula1:="=and(round($u2, 2)<>2.04, round($u2, 2)<>3.59)"
        .FormatConditions(.FormatConditions.Count).Font.Color = vbRed
    End With

End Sub