粘贴多次时不显示颜色

问题描述 投票:1回答:2

如果有人能帮我识别这段代码的问题,我真的很感激。每当在列A中插入“西班牙语”时,代码假设将列O变为红色。如果A2是“西班牙”,则O2变为红色。当我在A2中写“西班牙”时,下面的代码完成了这项工作。但是,如果我将“西班牙”从A2复制粘贴到A10,那么只有在O列中变为红色的单元格才会是单元格O2。

为什么O3到O10的单元也不会变红?我怎样才能做到这一点?必须赞赏。

Sub columnO(d As Long)

    If Cells(d, "A") = "Spain" And Cells(d, "O") = "" Then
    Cells(d, "O").Interior.Color = RGB(255, 0, 0)
    Else
    Cells(d, "O").Interior.Color = RGB(1000, 1000, 1000)
    End If

    End Sub


Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Application.Intersect(Range("A5:O10"), Target) Is Nothing Then
       columnO Target.row
    End If
excel vba excel-vba
2个回答
4
投票

作为替代方案,这可以通过使用条件格式在没有任何VBA的情况下完成。使用公式创建新的条件格式规则并应用于所需范围(在这种情况下为$ O $ 2:$ O $ 10):

=AND($A2="Spain",$O2="")

2
投票

更改您的Change事件以循环遍历Target中的所有行

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim r As Range
    If Not Application.Intersect(Range("A5:O10"), Target) Is Nothing Then
        For Each r In Application.Intersect(Range("A5:O10"), Target).Rows
           columnO r.Row
        Next
    End If
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.