Excel VBA更改单元格颜色

Excel VBA更改单元格颜色,excel,vba,ms-office,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 由于某些原因,代码将整个列变为红色。 我尝试过使用条件格式,同样的事情发生了。 请帮忙。

我试图让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
由于某些原因,代码将整个列变为红色。 我尝试过使用条件格式,同样的事情发生了。 请帮忙。谢谢大家!

条件格式将执行以下操作: A.使用以下公式:ANDU22.04、U23.59 B选择您的填充颜色 C将其应用于U2:U19004

但如果要对其进行编码,则if应为:

如果cell.Value为2.04,cell.Value为3.59,则cell.Interior.ColorIndex=3

条件格式将执行以下操作: A.使用以下公式:ANDU22.04、U23.59 B选择您的填充颜色 C将其应用于U2:U19004

但如果要对其进行编码,则if应为:

如果cell.Value为2.04,cell.Value为3.59,则cell.Interior.ColorIndex=3

更正您的和或:

编辑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
更正您的和或:

编辑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

使用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

使用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


您使用了错误的逻辑运算符。如果要使等于2.04或3.59的单元格改变颜色,应使用=运算符。另外,您需要比较两次,即cell.value=2.04或cell.value=3.59对不起,Brotato。我的意思是说不等于。我的错。非常感谢。我已经有一段时间没有使用VBA了,但是尝试一下如果cell.Value 2.04或cell.Value 3.59然后cell.Interior.ColorIndex=3我相信通过在第二部分中不添加运算符,VBA会将数字视为真,因为除0之外的任何值都是真的,并且总是会发生我会避免使用Color.Index,因为使用可以改变主题,然后你的颜色可以改变。因此,在一个主题下,Color.Index1可能是橙色的,但在另一个主题下,它可能是蓝色的。我建议在设置颜色时始终使用RGB值。您使用了错误的逻辑运算符。如果要使等于2.04或3.59的单元格改变颜色,应使用=运算符。另外,您需要比较两次,即cell.value=2.04或cell.value=3.59对不起,Brotato。我的意思是说不等于。我的错。非常感谢。我已经有一段时间没有使用VBA了,但是尝试一下如果cell.Value 2.04或cell.Value 3.59然后cell.Interior.ColorIndex=3我相信通过在第二部分中不添加运算符,VBA会将数字视为真,因为除0之外的任何值都是真的,并且总是会发生我会避免使用Color.Index,因为使用可以改变主题,然后你的颜色可以改变。因此,在一个主题下,Color.Index1可能是橙色的,但在另一个主题下,它可能是蓝色的。我建议在设置颜色时总是使用RGB值。你是怎么做到的?我最初有相同的代码。但它仍然突出了整个专栏。我做错了什么?谢谢大家!@CiaraMo您可能是舍入错误的受害者…………U列中的值可能与您的标准不完全匹配!特别是如果它们来自公式,它们确实来自公式。这是一个求和函数。那我能修好什么?我修好了!我把所有的浮点数都锁定在小数点后2位。现在它就像一个符咒!非常感谢你@加里的学生:@CiaraMo看我的编辑1你是怎么做到的?我最初有相同的代码。但它仍然突出了整个专栏。我做错了什么?谢谢大家!@CiaraMo您可能是舍入错误的受害者…………U列中的值可能与您的标准不完全匹配!特别是如果它们来自公式,它们确实来自公式。这是一个求和函数。那我能修好什么?我修好了!我把所有的浮点数都锁定在小数点后2位。现在它就像一个符咒!非常感谢你@加里的学生:@CiaraMo看我的编辑1