0

我需要了解为什么我的代码不修改单元格的背景颜色(而且我不想使用条件格式)

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 语句中被注释的行是我的其他尝试,但这些都不起作用。

我在哪里做错了?

4

1 回答 1

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

请注意,我已将其从 a 更改Function为 a Sub。因为您似乎不需要返回值。最后我还去掉了 SignIfError = True ,因为只有Function.

你可以这样称呼它:

myCheck ActiveSheet.Range("A1:A5"), 3

如果您想使用单元格中的值来调用 RightValue,您可以这样称呼它:

myCheck ActiveSheet.Range("A1:A5"), ActiveSheet.Range("B1").Value
于 2013-06-08T15:26:26.063 回答