我正在尝试设置一个简单的解决方案来突出显示日期大于今天日期的单元格.我目前拥有以下内容:
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
Run Code Online (Sandbox Code Playgroud)
我不断得到"类型不匹配"错误,但列(H)格式化为日期,所以我不确定我做错了什么.任何帮助或方向将不胜感激.
Range("H2:H" & lrow).Value将是一个2D数组(如果涉及多个单元,则Valuea Range总是一个2D数组); 你得到一个类型不匹配错误,因为你无法将2D数组与a进行比较Date; 如果您不能使用条件格式,则需要比较各个数组下标.
你要做的最后一件事是迭代每个单独的单元格(否则你的下一个问题将是"如何让这个循环运行得更快?").获取该数组Variant,并迭代该数组 - 因为它只有1列,使其成为一维数组Application.Transpose:
Dim values As Variant
values = Application.Transpose(Range("H2:H" & lastRow).Value)
Dim i As Long, current As Long
For i = LBound(values) To UBound(values)
current = i + 1 'array would be 1-based, so to start at row 2 we need to offset by 1
If values(i) > Date Then
ActiveSheet.Cells(current, 8).Interior.Color = vbYellow
End If
Next
Run Code Online (Sandbox Code Playgroud)
这样你就可以在必要时点击工作表.
| 归档时间: |
|
| 查看次数: |
333 次 |
| 最近记录: |