使用日期比较的条件格式

时间:2015-02-04 17:49:51

标签: excel vba date excel-vba conditional-formatting

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

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

我正在尝试识别当前单元格的地址,以便可以将其与今天的日期进行比较。请记住,将根据不同日期的列检查此公式。

我可以在Excel中轻松创建条件格式,但我正在尝试在VBA代码中重新创建此语句。

当我创建Excel中发生日期所需的条件格式,然后在VBA中查看公式时;结果如下: =FLOOR(A32,1)=TODAY()

2 个答案:

答案 0 :(得分:0)

以下内容可为您提供所需内容:

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

如果您想引用特定单元格进行日期比较使用(例如C1):

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

请注意,在两个示例中,$之前都有一个A,因为它是一个固定列,但行前面没有$,因为行({{1} })需要变量。

答案 1 :(得分:0)

我不知道CF规则的代码如何适合周围的代码,但您最好明确地将.Range的范围定义为属于同一个父工作表。< / p>

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

前缀句点(例如句号或。)告诉.Range(....Cells(...他们属于oSheet。没有它们,您的代码可能有效,也可能无效。最近出现了一些案例,其中一个简单的父错误定义(通过依赖 ActiveSheet )破坏了其他良好的代码。