2

尝试在 VBA 中插入以下公式;

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

  • 日期是今天或更早(即项目今天或更早到期)= RED
  • 日期是今天 + 最多 7 天 = 琥珀色
  • 日期是今天少于 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 then 等等。

有人可以提供一些指导吗?:)

4

2 回答 2

2

VBA 有一个 Date 函数,它返回今天的日期。VBA 中的日期是自 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
于 2012-07-17T15:19:11.677 回答
1

安德森先生是正确的,您可以使用条件格式来完成此操作,但是如果您想在 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 天的日期才会填充内部颜色。大于和小于填充所有内部单元格颜色

抱歉所有的编辑

于 2012-07-17T15:17:24.620 回答