2012-07-17 50 views
2

試圖做一個刀片更改單元格填充如果公式中VBA以下;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 

我一直很努力,但我不知道該怎麼做。

我認爲我的方式是正確的但我不知道如何再等上的代碼的。如果日期= -7days。

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

+1

爲什麼不使用條件格式 - http://dl.dropbox.com/u/47426368/untitled.JPG – 2012-07-17 15:03:26

回答

2

VBA有一個日期函數返回當天的日期。在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

安德森先生是正確的,你可以使用條件格式但是,如果你想這樣做在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天以前到今天會有內飾顏色填充。大於和小於填滿所有內部單元的顏色

對不起,所有的編輯