我有一张工作表,其中的表格有 400 行以上,我有一个代码,如果单元格中的日期比 TODAY() 早 90 天,则根据单元格值隐藏某些行。并且它运行良好,但不幸的是,它需要很长时间才能应用于所有表格,我可以看到它一行接一行地进行转换。请提出任何建议。
这是我的代码
Sub hideolderdates()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Database")
wsLR = ws.Cells(Rows.Count, 9).End(xlUp).Row
For x = 5 To wsLR
'analyze date, see if its 3 weeks or older
If ws.Cells(x, 9) <= Date - 90 Then
'hide
ws.Range("a" & x).EntireRow.Hidden = True
End If
Next x
End Sub
您可以将所有日期放入一个数组中,因为这比在每次循环时引用工作表更快。
您还可以添加
Application.ScreenUpdating = False
,Application.EnableEvents = False
正如@Shrotter 在他的评论中所指出的那样 - 记得在程序结束时将它们恢复为 True。单元格中只有 881 个日期,执行大约需要 0.02 秒。