我需要理解为什么我的代码不会修改单元格的背景颜色(我不想使用条件格式化)
Function myCheck(ToVerify As Range, RightValue As Range) As Boolean
Dim rng1 As Range
Dim rng2 As Range
For Each rng1 In ToVerify.Cells
For Each rng2 In RightValue.Cells
If (rng1.Value <> rng2.Value) Then
rng1.Interior.Color = RGB(255, 0, 0)
'rng1.Cells.Interior.Color = RGB(0, 255, 0)
'rng1.Cells.Interior.ColorIndex = 10
'rng1.Interior.ColorIndex = 10
End If
Next rng2
Next rng1
SignIfError = True
End Function
我已经使用此代码来确定一行中的哪些单元格(ToVerify)没有特定单元格的相同值(RightValue)。我需要让这些细胞可见,然后我想改变它们的背景颜色。问题是Excel不会更改此单元格的背景颜色。我确定单元格值满足If语句中的条件。被评论的IF语句中的行是我的其他尝试,但这些都没有奏效。
我在哪里做错了?
答案 0 :(得分:1)
我将假设RightValue只是一个值,而不是它们的整个范围。在这种情况下,这可能会做你想要的:
Sub myCheck(ToVerify As Range, RightValue As Variant)
Dim cell As Range
For Each cell In ToVerify.Cells
If cell.Value <> RightValue Then
cell.Interior.Color = RGB(255, 0, 0)
'else make it white
Else
cell.Interior.Color = RGB(255, 255, 255)
End If
Next cell
End Sub
请注意,我已将其从Function
更改为Sub
。因为您似乎不需要返回值。我也在最后摆脱了SignIfError = True,因为只有Function
才需要。
您可以这样称呼它:
myCheck ActiveSheet.Range("A1:A5"), 3
如果你想使用单元格中的值来调用RightValue,你可以这样称呼它:
myCheck ActiveSheet.Range("A1:A5"), ActiveSheet.Range("B1").Value