Excel VBA在单元格上改变颜色

时间:2014-06-25 20:24:38

标签: excel vba excel-vba

也许由于我的英语不好,你们中的一些人可能会误解我想做什么。无论如何,这是我想要的代码。经过多次试验和错误,我做到了,但我怀疑它是最好的方式,但它的工作原理=)。如果有人知道如何使代码更好,请告诉我=)。 我以前的帖子也在这个新代码之下。

Private Sub Worksheet_Change(ByVal Target As Range)

Dim row As Integer

For row = 1 To 1000
If Cells(row, "A").Value = "Yes" Then
    Range("B" & row).Interior.ColorIndex = 4


    End If

    If Cells(row, "A").Value = "yes" Then
    Range("B" & row).Interior.ColorIndex = 4


    End If


Next row

End Sub

上一篇文章

我在excel中编写了一个VBA代码,我想在每次写入时更改单元格颜色"是"。在这种情况下,我写"是"在E列和A列中应该改变颜色。我使用了for循环,但它没有按我的意愿运行。我有一种感觉,我觉得有点不对劲......

Private Sub Worksheet_Change(ByVal Target As Range)

Dim cellNr As Long

For cellNr = 1 To 5

    If Range("E" & cellNr).Value = "yes" Then

       Range("A" & cellNr).Interior.ColorIndex = 5   

       Else
          ActiveCell(0, -2).Interior.ColorIndex = 4
       End If

Next cellNr

End Sub

3 个答案:

答案 0 :(得分:3)

对公式使用条件格式。从第1行开始,所需的公式为

=$E1="yes"

enter image description here

答案 1 :(得分:1)

如果我理解您要尝试使用以下行:

ActiveCell(0, -2).Interior.ColorIndex = 4

将其替换为:

ActiveCell.Offset(0, -2).Interior.ColorIndex = 4

据我所知,我告诉你删除的行总是会抛出错误。它在句法上没有任何意义。您应该使用“偏移”功能获取相对于“活动单元格”的位置。但是,如果活动单元格在A列或B列中,则此偏移函数将引发错误,因为活动单元格左侧的列少于2列。

答案 2 :(得分:0)

考虑:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rOfInterest As Range
    Set rOfInterest = Range("E1:E5")
    If Intersect(Target, rOfInterest) Is Nothing Then Exit Sub
    v = Target.Value
    If v = "yes" Then
        Target.Offset(0, -4).Interior.ColorIndex = 5
    Else
        Target.Offset(0, -4).Interior.ColorIndex = 4
    End If
End Sub

并确保宏位于工作表代码区域中。