0

セル値が 0 の場合、動的範囲 (列内) で表示しようとしています。そうであれば、ポップアップ メッセージを表示し、列 A、B、C (同じ行番号) の色を赤。

どんな助けでも大歓迎です.!! ありがとうございました。

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim KeyCells As Range

    Set KeyCells = Range(Cells(9, "AD"), _ 
        Cells(Rows.Count, "AD").End(xlUp).Resize(, 1))

    If Not Application.Intersect(KeyCells, Range(Target.Address)) _
           Is Nothing Then

            If Application.Intersect(KeyCells, Range(Target.Address)) = 0 Then

                MsgBox "Row " & Target.Address & " will not be considered."

            End If

~~ 上記のIFブロックで以下のコードを使用してみましたが、すべての行 (現在のカウントまで) で同じ結果が得られ、背景色が変更されます。A, B , C色の変更をその行と列(セル)だけに制限するつもりです。

~~ ここで、セルの値が '0' の場合、最初の 3 列A, B, Cのセル (同じ行番号の列は別の背景色で更新する必要があります) を確認したいと思います。 ~~ 行全体の色を赤に変更しようとしましたが、その間に現在の行までのすべての行の色が変わります。これは意図したものではありません。これは範囲が動的であるために発生していますか?

For Each Cell In KeyCells
    Select Case Cell.Value
        Case Is = 0
            Cell.EntireRow.Interior.ColorIndex = 3
        Case Else
            Cell.EntireRow.Interior.ColorIndes = xlNone
    End Select
Next

End If
End Sub
4

1 に答える 1

0

あなたの質問は少し不明確ですが、おそらくこのコードのスニペットは役に立ちません:

'your code here until...
        If Application.Intersect(KeyCells, Range(Target.Address)) = 0 Then

            MsgBox "Row " & Target.Address & " will not be considered."

        End If

'color for range A:C in target row
Select Case Target.Value
    Case Is = 0
    'into red
        Range(Cells(Target.Row, "A"), Cells(Target.Row, "C")).Interior.ColorIndex = 3
    Case Else
    'to none color
        Range(Cells(Target.Row, "A"), Cells(Target.Row, "C")).Interior.ColorIndex = xlNone
End Select

'no looping

End if
End sub
于 2013-10-03T11:45:19.533 に答える