我的代码VBA检查日期中的错误在哪里

时间:2017-10-16 12:19:31

标签: excel vba excel-vba if-statement

我有一个代码,当用户点击按钮时,系统会在当前日期和写入日期之间进行比较,然后使用适当的颜色填充单元格。

问题是,如果在我写完10-16-2017之前的2天,它将填充红色背景。如果我今天检查它必须将颜色变为黄色。 问题是,一旦细胞变色,它就不会改变颜色。

示例:

日期10-16-2017写于3前,因此初始颜色为红色。

今天是10-16-2017所以当我按下按钮时,它必须变为黄色。

这是我的代码:

Private Sub CommandButton1_Click()
    Dim i As Integer

    For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment'
        If IsEmpty(Cells(i, 3)) Then
            Exit Sub
        ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) < 0 Then
            Cells(i, 3).Interior.Color = vbGreen

        ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) = 0 Then
            Cells(i, 3).Interior.Color = vbYellow

        ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 1 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 4 Then
            Cells(i, 3).Interior.Color = vbRed

        ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) >= 5 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) <= 10 Then
            Cells(i, 3).Interior.Color = vbCyan

        Else
            Cells(i, 3).Interior.ColorIndex = xlNone
        End If
    Next
End Sub

1 个答案:

答案 0 :(得分:0)

如果IsEmpty(Cells(i,3))那么Exit Sub就是你的问题。 如果范围内有空白单元格,如果找到,则代码将停止。

编辑此行。你的代码将运作良好。

    If IsEmpty(Cells(i, 3)) Then
         Cells(i, 3).Interior.Color = xlNone