我正在尝试建立一个简单的解决方案,以突出显示日期大于当前日期的单元格。我目前拥有的东西如下:
Sub Test()
Dim lrow As Long
lrow = Cells(Rows.Count, 1).End(xlUp).Row
Columns("H:H").EntireColumn.AutoFit
If Range("H2:H" & lrow).Value > Date Then Cell.Interior.Color = vbYellow
End Sub
我一直收到“类型不匹配”错误,但是列(H)的格式设置为日期,因此我不确定自己在做什么错。任何帮助或指示将不胜感激。
答案 0 :(得分:5)
Range("H2:H" & lrow).Value
将是2D数组(如果涉及多个单元格,则Value
的{{1}}始终是2D数组);您收到类型不匹配错误,因为您无法将2D数组与Range
进行比较;如果您不能使用conditional formatting,则需要比较各个数组下标。
最后要做的是迭代每个单元格(否则,下一个问题将是“如何使此循环运行得更快?”)。将该数组放入Date
中,并对该数组进行迭代-由于它只有1列,因此请使用Variant
使其成为一维数组:
Application.Transpose
这样,您只有在拥有 时才能点击工作表。
答案 1 :(得分:2)
答案 2 :(得分:2)
为响应@MatthieuGuindon对@CharlesPL的回答的建议,下面是一些执行条件格式的代码。我已经对其进行了设置,以使其突出显示在您将其运行为亮黄色之后的日期。
Option Explicit
Sub setCondFormat()
Dim lrow As Long
lrow = ActiveSheet.Range("H" & ActiveSheet.Rows.Count).End(xlUp).Row
With Range("H2:H" & lrow)
.FormatConditions.Delete
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=H2>TODAY()"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
With .Interior
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
End With
End With
End With
End Sub
答案 3 :(得分:1)
我建议在单元格范围内进行迭代并分别测试每个单元格。请参见下面。
Resources#getResourceEntryName()