查找月份并为单元格颜色着色

我有date的第一栏。 (2016年7月30日)。 我想通读整个专栏,看看现在是不是这个月。 如果它不等于八月,那么我想(一月七日)上色绿色,那么八月白色,而未来,那么它应该是黄色的。

我试了下面的代码。 它正在打印黄色。 它只是看今天而不是月份。

你能帮我怎么执行吗?

Sub ChangeColour() Dim rCell As Range With Sheets("BU") For Each rCell In .Range("I5", .Cells(.Rows.Count, 9).End(xlUp)).Cells If rCell.Value < Month(today) Then rCell.Interior.Color = vbGreen ElseIf rCell.Value > Month(today) Then rCell.Interior.Color = vbYellow Else rCell.Interior.Color = vbWhite End If Next rCell End With End Sub 

您需要检查date(单元格值)与当月的月份。 今天也是一个从未定义的variables,所以你需要使用Month(Date)

例如:

 Month(rCell.Value) < Month(Date) 
 Sub ChangeColour() Dim rCell As Range With Sheets("BU") For Each rCell In .Range("I5", .Cells(.Rows.Count, 9).End(xlUp)).Cells If Month(rCell.Value) < Month(DateTime.Now) Then rCell.Interior.Color = vbGreen ElseIf Month(rCell.Value) > Month(DateTime.Now) Then rCell.Interior.Color = vbYellow Else rCell.Interior.Color = vbWhite End If Next rCell End With End Sub 

如果你的单元格的date是文本,代码将是这样的。

 Sub ChangeColour() Dim rCell As Range Dim m As Integer, vSplit With Sheets("BU") For Each rCell In .Range("I5", .Range("i" & Rows.Count).End(xlUp)) vSplit = Split(rCell, ".") m = vSplit(1) If m < Month(Date) Then rCell.Interior.Color = vbGreen ElseIf m > Month(Date) Then rCell.Interior.Color = vbYellow Else rCell.Interior.Color = vbWhite End If Next rCell End With End Sub