使用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 )打破了其他好的代码。