2017-04-18 35 views
-2

如果单元格的日期值小于今天,我想做VBA将单元格变为红色。它也应该查找空白单元格日期,不要触摸它。我不想使用条件格式而不是VBA,我希望它使用宏。VBA条件格式化,如果它小于今天

Sub ChangeColor() 

    Dim rCell As Range 

    With Sheet1 
     For Each rCell In .Range("$C$2:$AG$27", .Cells(.Rows.Count, 11).End(xlUp)).Cells 
      If rCell.Value > Date Then 
       rCell.Interior.Color = vbRed 
      Else 
       rCell.Interior.Color = vbGreen 
      End If 
     Next rCell 
    End With 

End Sub 
+0

欢迎来到SO。参加[旅游](http://stackoverflow.com/tour)或阅读[如何提问](http://stackoverflow.com/help/how-to-ask),并将信息纳入其中将会耗费很长时间在这个网站上获得一些真正的帮助。正如你写的,你只是告诉我们信息。没有问题,也没有任何代码不起作用。 –

+0

为什么你想使用VBA而不是内置的条件格式?尽可能使用内置工具几乎总是更好。另外,这不是一个代码编写服务,我们帮助您纠正在代码中遇到的错误或问题,因此请提供您迄今为止已尝试的内容以及无法解决的问题。如果你只是想找个地方开始,请查看[Range.Interior](https://msdn.microsoft.com/en-us/library/office/ff196598.aspx)对象(特别是Range.Interior。 ColorIndex方法) – tigeravatar

+0

检查顶部请忘记附上代码 – dummmmy

回答

0

好吧试试看。

该代码将红色内部颜色应用于包含今天日期之前的日期的单元格。 它不会触及任何其他单元格。

Sub ChangeColor() 
    Dim rCell As Range 
    With Sheet1 
     For Each rCell In .Range("$C$2:$AG$27", .Cells(.Rows.Count, 11).End(xlUp)).Cells 
      If rCell <> "" And IsDate(rCell) And rCell.Value < Date Then 
       rCell.Interior.Color = vbRed 
      End If 
     Next rCell 
    End With 
End Sub