Выделите ячейку на основе значений других ячеек - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь выделить ячейку в столбце 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

1 Ответ

0 голосов
/ 28 февраля 2019
  1. Вы можете перемещаться из одной ячейки в другую с помощью Offset(Row Offset, Column Offset).Поскольку вы перебираете Column C и хотите проверить значение в Column D, то есть на 2 столбца справа, вы можете использовать rCell.Offset(0, 2)
  2. Чтобы квалифицировать свои диапазоны с помощью рабочего листа.Я объявил переменную ws, чтобы сделать это.Вы также можете использовать With block
  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
...