使用if语句为颜色列修复简单的VBA代码

这是我第一次发帖。我想修复一个代码以正确地为列着色,并使代码更简单。非常感谢您的反馈。

这是针对Excel VBA的。不管if语句如何,整个列的颜色都被编码。

没有错误消息,但是如果一行中两个对应的两个单元格都具有该值,则当我希望它们使整个2列变为红色时,代码会将其着色为红色。

Sub ColorCol()

Dim i As Long

For i = 2 To Rows.Count

    If Not IsEmpty(Columns("AB").Value) And Not IsEmpty(Columns("CD").Value) Then
        Cells(i,2).Interior.Color = vbRed
        Cells(i,3).Interior.Color = vbRed
    End If
    If Not IsEmpty(Columns("PQ").Value) And Not IsEmpty(Columns("RS").Value) Then
        Cells(i,3).Interior.Color = vbRed
    End If

Next i

End Sub
skymiandu02 回答:使用if语句为颜色列修复简单的VBA代码

您要检查每个单元格的.Value

因此

If Not IsEmpty(Columns("AB").Value) And Not IsEmpty(Columns("CD").Value)

成为

If Not IsEmpty(Cells(i,"AB").Value) And Not IsEmpty(Cells(i,"CD").Value)

If Not IsEmpty(Columns("PQ").Value) And Not IsEmpty(Columns("RS").Value)

您可以结合使用If语句(尽管我不确定它有助于提高可读性)。使用括号将每个条件括起来:

If (Not IsEmpty(Cells(i,"CD").Value)) Or _
   (Not IsEmpty(Cells(i,"PQ").Value) And Not IsEmpty(Cells(i,"RS").Value)) Then

更重要的是找到最后一行并循环到最后一行,而不是遍历所有行。有关具体操作,请参见this question

,

如果我正确回答了您的问题,这将是一种比较同一行中的单元格并在它们包含相同值的情况下将它们涂成红色的方法:

Option Explicit

Sub ColorCol()

Dim i As Long

For i = 2 To 6

    If Cells(i,2).Value = Cells(i,3).Value Then
       Cells(i,2).Interior.Color = vbRed
       Cells(i,3).Interior.Color = vbRed
    End If

Next i

End Sub
本文链接:https://www.f2er.com/3150167.html

大家都在问