Bem vindo ao nosso fórum Planilhando, @fsnsengel!
Antes de continuarmos, fique por dentro de nossas Regras.
Quanto à sua dúvida, o problema principal de se usar o método Range.Replace é que ele só verifica fórmulas e não os valores das células. Logicamente que se seu intervalo contivesse somente valores, como a fórmula seria o próprio valor não haveria problema, ele substituiria.
Se quiser continuar usando o Replace pra substituir uma data específica por valores de erro, terás que acrescentar duas etapas à sua rotina:
- destruir antes as fórmulas do intervalo convertendo-as aos seus respectivos valores (poderia usar simplesmente
Range.Value = Range.Value).
- no parâmetro Wath:= usar uma data e não uma String. Sugiro aqui dimensionar a variável Word como Variant e não String e no seu bloco With fazer algo como:
Sub DeletarReset()
Dim Col As Variant, Word As Variant 'String
...
...
With Columns(Col)
If IsDate(Word) Then
.Value = .Value 'Atenção: as fórmulas serão diluídas a seus resultados.
Word = CDate(Word)
End If
.Replace Word, "#N/A", xlWhole
...
...
End Sub
Outra abordagem muito utilizada para fazer o que vc pretende seria ir excluindo as linhas de baixo pra cima através de loop pelas células.
Postado : 07/06/2021 9:34 am