我有VBA代码,允许用户输入日期并将输入的日期与当前的日期进行比较,以便以适当的颜色填充单元格,我正在使用Select语句。
我需要让单元格填写红色,用户输入的日期是当前日+ 10天。
怎么做的?
代码
Private Sub CommandButton1_Click()
Dim i As Integer
Dim objDate As Date
MsgBox (objDate)
For i = Range("C5000").End(xlUp).Row To 2 Step -1 'Range upto 5000, chnge this as per your requirment'
objDate = Date
Select Case VBA.CDate(Cells(i, 3))
Case IsEmpty(i)
Cells(i, 3).Interior.ColorIndex = 0
Case Is < VBA.Date()
Cells(i, 3).Interior.Color = vbGreen
Case Is = VBA.Date()
Cells(i, 3).Interior.Color = vbYellow
Case Is > VBA.Date()
Cells(i, 3).Interior.Color = vbRed
End Select
Next
End Sub发布于 2017-10-09 09:59:22
这是另一种实现这一目标的方法。将这两个日期之间的差异作为测试表达式,然后检查每一种情况(即,它是否小于0,等于它,还是差大于10)。
If IsEmpty(Cells(i, 3)) Then Exit Sub
Select Case (VBA.CDate(Cells(i, 3)) - VBA.Date())
Case Is < 0
Cells(i, 3).Interior.Color = vbGreen
Case 0
Cells(i, 3).Interior.Color = vbYellow
Case Is > 10
Cells(i, 3).Interior.Color = vbRed
Case Else
'Colour to be applied if the difference is between 1 and 10 (both inclusive)
End Select而且,您对IsEmpty的测试将无法按您的意愿工作,因为您正在检查i (计数器)是否为空。它将始终返回False。此外,单元格的ColorIndex已经为0。因此,除非您的代码必须检查以前非空单元格是否变为空,否则Cells(i, 3).Interior.ColorIndex = 0部分是不必要的。
更新:
作为一个有趣的实验,我尝试了一下结果,下面是截图:
PS:,因为OP没有提到颜色,因为当差在1到10之间时,我把这些细胞涂成黑色:-P
https://stackoverflow.com/questions/46643315
复制相似问题