在excel中使用VBA我有一个代码,用于将输入的日期与当前日期进行比较,并根据结果,系统将以正确的颜色填充单元格。
其中代码在四个条件下进行比较。 如果输入的日期减去当前值:
使用IF语句,但系统给出错误,错误在哪里以及如何解决?
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 = vbBlue
ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) > 4 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) < 10 Then
Cells(i, 3).Interior.Color = vbRed
End If
Next
End Sub
答案 0 :(得分:1)
将Exit Sub
放入下一行。或者甚至更好,删除该行代码以允许处理所有行,例如......
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
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
Debug.Print VBA.CDate(Cells(i, 3)) - VBA.Date()
Cells(i, 3).Interior.Color = vbBlue
ElseIf (VBA.CDate(Cells(i, 3)) - VBA.Date()) > 4 And (VBA.CDate(Cells(i, 3)) - VBA.Date()) < 10 Then
Debug.Print VBA.CDate(Cells(i, 3)) - VBA.Date()
Cells(i, 3).Interior.Color = vbRed
Else
Cells(i, 3).Interior.Color = vbWhite
End If
Next
End Sub