Tenho uma planilha com uma tabela com mais de 400 linhas e um código para ocultar algumas linhas com base em um valor de célula se a data na célula for anterior a TODAY() com 90 dias. Funciona bem, mas infelizmente demora muito para aplicar em todas as tabelas e vejo que ele percorre as linhas uma após uma, o que é uma tradução. Alguma sugestão, por favor?
aqui está meu código
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
Você pode colocar todas as suas datas em uma matriz, pois isso será mais rápido do que referenciar a planilha em cada passagem do seu loop.
Você também pode adicionar
Application.ScreenUpdating = False
andApplication.EnableEvents = False
como @Shrotter indica em seu comentário - lembre-se de retornar para True no final do procedimento.Com apenas 881 datas nas células, levou cerca de 0,02 segundos para ser executado.