运行代码前检查不同的范围

时间:2018-04-24 14:25:55

标签: excel vba excel-vba

我刚刚注册,因为我无法在任何地方找到问题的答案,这让我发疯了。我有一个代码(下面)我试图只有在不同的范围符合标准时才能运行。在列“L”中我有一个日期,如果日期少于14天,则单元格将突出显示并加粗。但是,如果列“M”中的单元格为空,我只需要运行此代码。 “L”是项目的截止日期,“M”是完成日期。因此,如果“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

当项目获得批准时,批准日期将以“M”输入。当发生这种情况时,“截止日期”或“L”变得无关紧要,因此我不再需要格式化它,它不需要填充。

3 个答案:

答案 0 :(得分:1)

使用它来测试下一栏中的单元格: If cell.offset(0,1).value="" then

答案 1 :(得分:1)

我不确定你在问什么,但是你走了:

{{1}}

答案 2 :(得分:0)

'If Range("M2:M1000").Text <> "" Then替换为此代码

If Range("M" & cell.Row).value = "" Then