根据其他单元格值突出显示一个单元格

时间:2019-02-28 03:04:12

标签: excel vba excel-vba-mac

我正在尝试突出显示E列下的单元格,如果该单元格为空白,并且其在C列下的对应值是“人员”。以下无法做到这一点。有人可以帮我吗?

Sub Personnel()
'Check for missing Personnel Information'
    Dim rRng As Range, rRng1 As Range, c
    lRow = Range("A" & Rows.Count).End(xlUp).row
    Set rRng = Range("C1:C" & lRow)
    Set rRng1 = Range("E1:E" & lRow)
      For Each cell In rRng
        If rRng.cell.Value = "Personnel" And rRng1.cell.Value = "" Then
        cell.Interior.ColorIndex = 6
        cell.AddComment "Mapping Info is missing"
        End If

    Next cell
End Sub

2 个答案:

答案 0 :(得分:2)

  1. 您可以使用Offset(Row Offset, Column Offset)从一个单元格导航到另一个单元格。由于您要遍历Column C并想检查Column D中的值(该值在右边2列),因此可以使用rCell.Offset(0, 2)
  2. 使用工作表来限定范围。我声明了变量ws来做到这一点。您还可以使用With
  3. 请勿使用cell,声明要用于循环的范围变量。在这里,我们使用rCell遍历范围rRng
  4. 正确缩进代码可以大大提高可读性。这将使调试,将来更新和编写变得更加容易。

Option Explicit

Sub Personnel()

Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim rRng As Range, rCell As Range, LR As Long

LR = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
Set rRng = ws.Range("C1:C" & LR)

    For Each rCell In rRng
        If rCell = "Personnel" And rCell.Offset(0, 2) = "" Then
            rCell.Interior.ColorIndex = 6
            rCell.AddComment "Mapping Info is missing"
        End If
    Next rCell

End Sub

答案 1 :(得分:0)

我看到您为此创建了一个名为“ Personel”的宏,这意味着您需要启动该宏才能完成突出显示。在某些情况下,这意味着人们不知道使用条件格式可以自动完成此操作。

让我向您解释如何使用条件格式:在条件格式页面中,选择“新规则”,“选择公式”(假设您想对单元格E2进行此操作),然后输入以下公式:

=AND(ISBLANK(E2);C2="Personel")

为什么这个公式以及我怎么知道它是正确的?很简单:首先,我在另一个单元格(不是E2)中输入此公式,然后查看结果是否为“ TRUE”。

然后将这种条件格式应用于所需的E列中的每个单元格,并且突出显示将自动执行,而无需启动宏。

如果您确实想继续使用VBA,请告诉我,我将删除此答案。