Inquiridor
Erro em tempo de execução 1004 "nenhuma celula foi encontrada"

Pergunta
-
Bom dia,
Tenho uma macro que exclui linha com base em critérios de uma planilha. Tudo funciona normalmente, só que depois de algum tempo o mesmo código não consegue localizar o critério e aparece uma mensagem de erro em tempo de execução "1004" dizendo que o critério não foi localizado com a seguinte mensagem "nenhuma celula foi encontrada".
O interessante é que ele se encontra na planílha.
O código é esse:
Sheets("PLAN1").Select Let col = "A" If Len(col) > 0 And Not col Like "*[!0-9]*" Then col = Val(col) Let wold = DTPicker1.Value With Columns(col) .Replace wold, "#N/A", xlWhole .SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Clear End With
Eu tenho um userform que possui um controle DTPicker1 que serve como critério para apagar a linha. Uma observação que esqueci de relatar é que isso foi identificado por min ainda na plataforma do VBA. É muito estranho a macro estava funcionando corretamente, então fui utilizar outras planilhas, mas não fechei a plataforma do vba. Quando fui testar novamente a macro, a mensagem de erro apareceu.
Apartir daí fiquei tentando resolver o problema, para ver o que é que fazia com que isso acontecesse. Foram duas semanas sem sucesso, mas consegui observar alguns fatores:
1º O erro ocorre quase todas as vezes em que eu abro a planilha e deixo a plataforma vba aberta. Talvez ele possa ocorrer em outros eventos também. A partir daí eu consigo testar a macro por um tempo até que a mensagem de erro apareça.
2º Esse erro fica permanente, só desaparece quando fecho e abro a planilha novamente.
3º Com o erro em ação eu inseri um CommandButton na planilha para chamar o userform e para minha supresa a macro funcionou. Não sei se após também algum tempo ela poderá falhar do mesmo jeito.
4º Quando o problema ativo tentei abrir uma outra planilha que também possui a mesma função. a função da outra também falhou.
5º O mais curioso é que o critério para a pesquisa existe na planilha e mesmo assim aparece essa mensagem de erro.
6º Tentei mudar o código, fiz o teste com mais dois códigos. O 1º tem a mesma função mais utiliza o filtro.
Sheets("PLAN1").Select Dim LR As Long With ActiveSheet .UsedRange.AutoFilter Field:=1, Criteria1:=DTPicker1.Value LR = .Cells(.Rows.Count, 2).End(xlWhole).Row If LR = 1 Then GoTo vazaí '.Range("A2:A" & LR).SpecialCells(xlCellTypeVisible). _ 'EntireRow.Clear .Range("A2:A" & LR).SpecialCells(xlCellTypeVisible).EntireRow.Clear vazaí: .AutoFilterMode = False End With
2º CÓDIGO
Sheets("plan1").Select Dim criterio As Date criterio = DTPicker1 Dim lRow As Long Dim lLast As Long lLast = Plan1.UsedRange.Rows.Count For lRow = lLast To 2 Step -1 If Plan1.Cells(lRow, "A") = criterio Then Rows(lRow).Clear End If Next lRow Exit Sub
Com o problema ocorrendo no código citado inicialmente, testei esse dois e para minha supresa eles funcionaram. Porém decidi testar mais algumas vezes durante uns dois dias, mas eles também falharam. O interessante é que estes falham com menos frequencia. Durante os testes a falha somente ocorreu uma vez.
Já declarei os dados para ver se era isso que causava o erro, mas sem sucesso.
dim x as date x = DTPicker1
Todas as Respostas
-
Bom dia CRIARPLAN,
Tudo bem?
Entendi que você tem um código que roda normalmente, porém depois de um certo tempo ele para e apresenta um erro. É isso?
Poderia por gentileza compartilhar a mensagem completa de erro?
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-