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 は 1 つの値であり、それらの全範囲ではないと仮定します。その場合、これはあなたが望むことをするかもしれません:

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

Functiona から 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 に答える