Проверьте другой диапазон перед запуском кода - PullRequest
0 голосов
/ 24 апреля 2018

Я только что зарегистрировался, потому что нигде не мог найти ответ на свою проблему, и это сводило меня с ума.У меня есть код (ниже), который я пытаюсь запустить, только если другой диапазон соответствует критериям.В столбце «L» у меня есть дата, если дата менее чем через 14 дней, ячейка будет выделена и выделена жирным шрифтом.Однако мне нужно только запустить этот код, если ячейка в столбце "M" пуста.«L» - срок выполнения проекта, а «M» - завершенная дата.Так что, если «М» было завершено и имеет дату, то мне не нужно форматировать «L», потому что она уже завершена.Вот мой текущий код:

Sub InvestigationAlertMsg()

Sheets("Investigations").Select
Dim Msg As String
'Set test = Range("M2:M1000").Find(What:="")


For Each cell In Range("L2:L1000")
'If Range("M2:M1000").Text <> "" Then
        If cell.Value < Date + 14 And cell.Value <> "" Then
            If Msg = "" Then
                Msg = "Investigation(s) Due in <14 Days"
            End If
        cell.Interior.ColorIndex = 6
        cell.Font.Bold = True
        ElseIf cell.Value > Date + 14 Then
        cell.Interior.ColorIndex = 0
        cell.Font.Bold = False
        'ElseIf Range("M2:M1000").Text <> "" Then
        cell.Interior.ColorIndex = 3
        End If
'End If
Next

If Msg <> "" Then MsgBox Msg, vbOKOnly, "Attention"


End Sub

РЕДАКТИРОВАТЬ

Вот скриншот моих клеток

Screenshot

Когда проект будет утвержден, дата утверждения будет введена в «М».Когда это происходит, «срок исполнения» или «L» становится неактуальным, поэтому мне не нужно больше форматировать его, не нужно заполнять его.

Ответы [ 3 ]

0 голосов
/ 24 апреля 2018

Используйте это, чтобы проверить ячейку в следующем столбце: If cell.offset(0,1).value="" then

0 голосов
/ 24 апреля 2018

Я не уверен, что вы спрашиваете, но вот вам:

Sub InvestigationAlertMsg()
    Dim Msg As String
    Dim wsInvest As Worksheet, iCell As Range
    Set wsInvest = ThisWorkbook.Worksheets("Investigations")

    For Each iCell In wsInvest.Range("M2:M1000").SpecialCells(xlCellTypeBlanks).Offset(0, -1)
        If iCell.Value < Date + 14 And iCell.Value <> "" Then
            If Msg = "" Then _
                Msg = "Investigation(s) Due in <14 Days"
            iCell.Interior.ColorIndex = 6
            iCell.Font.Bold = True
        ElseIf iCell.Value > Date + 14 Then
            iCell.Interior.ColorIndex = 0
            iCell.Font.Bold = False
            iCell.Interior.ColorIndex = 3
        End If
    Next

    If Msg <> "" Then _
        MsgBox Msg, vbOKOnly, "Attention"
End Sub
0 голосов
/ 24 апреля 2018

Заменить 'If Range("M2:M1000").Text <> "" Then на этот код

If Range("M" & cell.Row).value = "" Then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...