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 回答