尝试在VBA中为以下内容插入公式;
在我的专栏K中,我想要三个条件:
我正在考虑使用以下内容:
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然后依此类推。
有人可以提供一些指导吗? :)
答案 0 :(得分:2)
VBA有一个Date函数,可以返回今天的日期。 VBA中的日期是自1900年12月31日以来的天数(通常是闰年错误),因此您可以减去或添加整数到日期以获取过去和未来几天。
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
答案 1 :(得分:1)
先生。 Anderson是正确的,您可以使用条件格式来完成此操作,但是如果您想在VBA中执行此操作创建一个变量来保存日期并将其设置为当前日期减去时间。然后,您只想将单元格值格式化为日期格式。完成此操作后,您可以将dateAdd用于和减去天数。见下文
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
我确实注意到你检查它是否相等所以只有今天的日期,从今天开始的7天和今天的7天之前的日期将填充内部颜色。大于和小于填充所有内部单元格颜色
抱歉所有的修改