使用date比较的条件格式

我正在尝试在VBA中创build条件格式设置规则,这将仅更改当前date的单元格背景颜色。 我有一年的date列。 我也在使用Office Excel 2010。

oSheet.Range(Cells(iStartRow, 1), Cells(iLastRow, 1)).FormatConditions.Add xlCellValue, xlEqual, "=" & Cells.Address & "=" & Date 

我试图确定当前的小区地址,以便与今天的date进行比较。 请记住,此公式将针对不同date的列进行检查。

我可以很容易地在Excel中创build条件格式,但是我试图在VBA代码中重新创build这个语句。

当我创build在Excel中发生的date所需的条件格式,然后在VBA中查看公式时; 这里是结果: =FLOOR(A32,1)=TODAY()

以下将得到你想要的:

 oSheet.Range(Cells(iStartRow, 1), Cells(iLastRow, 1)).FormatConditions.Add Type:=xlExpression, Formula1:="=$A" & iStartRow & "=TODAY()" 

如果您想引用特定的单元格进行date比较,请使用(例如C1):

 oSheet.Range(Cells(iStartRow, 1), Cells(iLastRow, 1)).FormatConditions.Add Type:=xlExpression, Formula1:="=$A" & iStartRow & "=$C$1" 

请注意,在这两个示例中,在A之前都有一个$ ,因为它是一个固定列,但在行之前没有$ ,因为行( iStartRow )需要是可变的。

我不知道如何CF规则的代码适合周围的代码,但你最好明确地定义范围的范围属于同一个父工作表。

 with oSheet .Range(.Cells(iStartRow, 1), .Cells(iLastRow, 1)).FormatConditions.Add Type:=xlExpression, Formula1:="=$A" & iStartRow & "=TODAY()" end with 

前缀句号(例如句号或。)告诉.Range(....Cells(...它们属于oSheet 。没有它们,你的代码可能工作,也可能不工作。简单的父错误定义(依靠ActiveSheet )打破了其他好的代码。