我正在尝试在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()
答案 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 )破坏了其他良好的代码。