代码之家  ›  专栏  ›  技术社区  ›  alex2002

多次粘贴时不显示颜色

  •  1
  • alex2002  · 技术社区  · 7 年前

    如果有人能帮我找出这段代码的问题,我将不胜感激。假设每次在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
    
    2 回复  |  直到 7 年前
        1
  •  4
  •   tigeravatar    7 年前

    另一种方法是,通过使用条件格式,无需任何VBA即可完成此操作。使用公式创建新的条件格式规则并应用于所需的范围(在本例中为$O$2:$O$10):

    =AND($A2="Spain",$O2="")
    
        2
  •  2
  •   YowE3K    7 年前

    更改您的 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