VBA插入如果 – 更改基于date的单元格填充

试图做一个插入如果公式在VBA为以下;

在我的专栏KI想要三个条件:

  • date是今天或更早(即项目是今天或更早的时间)=红色
  • date是今天+最多7天=琥珀色
  • date是今天less于7天=绿色

我正在考虑沿用以下几点:

Sub ChangeColor() lRow = Range("K" & Rows.Count).End(xlUp).Row Set MR = Range("K3:K" & lRow) For Each cell In MR If cell.Value = "TODAY" Then cell.Interior.ColorIndex = 10 If cell.Value = "TODAY-7days" Then cell.Interior.ColorIndex = 9 If cell.Value = "Morethan7Days" Then cell.Interior.ColorIndex = 8 Next End Sub 

我一直在尝试,但我不知道如何做到这一点。

我认为我的方式是正确的,但我不知道如何编码If date = -7days然后依此类推。

有人可以提供一些指导? 🙂

VBA有一个Date函数返回今天的date。 VBA中的date是1900年12月31日以来的天数(通常和闰年错误),所以你可以减去或者添加整数到Date来获得过去和将来的日子。

 Sub ChangeColor() Dim rCell As Range With Sheet1 For Each rCell In .Range("K3", .Cells(.Rows.Count, 11).End(xlUp)).Cells If rCell.Value <= Date Then rCell.Interior.Color = vbRed ElseIf rCell.Value <= Date + 7 Then rCell.Interior.Color = vbYellow Else rCell.Interior.Color = vbGreen End If Next rCell End With End Sub 

安德森先生是正确的,你可以使用条件格式来完成这一点,但是如果你想在VBA中做到这一点创build一个variables来保存date,并将其设置为当天减去时间。 然后,您只需要将单元格值格式化为date格式。 一旦完成,你可以使用dateAdd和减去date。 见下文

 Sub ChangeColor() Dim myDate As Date 'format the date excluding time myDate = FormatDateTime(Now, 2) lRow = Range("K" & Rows.Count).End(xlUp).Row Set MR = Range("K3:K" & lRow) For Each cell In MR If FormatDateTime(cell.Value, 2) = myDate Then cell.Interior.ColorIndex = 10 If FormatDateTime(cell.Value, 2) = DateAdd("d", -7, myDate) Then cell.Interior.ColorIndex = 9 If FormatDateTime(cell.Value, 2) = DateAdd("d", 7, myDate) Then cell.Interior.ColorIndex = 8 Next End Sub 

我没有注意到你的检查是否相同,所以只有今天的date,从今天开始的7天以及今天之前的7天,才会有内部颜色的填充。 大于和小于填充所有内部细胞的颜色

抱歉所有的编辑