Notifications
Clear all

Vários tratamento de erros em um único código

8 Posts
3 Usuários
0 Reactions
2,145 Visualizações
(@salezzi)
Posts: 10
Active Member
Topic starter
 

Pessoal, bom dia!

Gostaria de saber se é possível realizar vários tratamentos de erros em um único código, por exemplo, eu tenho um código que é para realizar pesquisa de datas e quando a primeira data não é localizada, irá pular para a segunda e se esta não for localizada, irá para terceira. Porém quando não localiza a primeira data, mostra um erro e então coloco o código "on error goto Data2:", até então funciona, mas se na "Data2:" apresentar erro e eu colocar "on error goto Data3:", não irá pular para a "Data3:" e sim apresentar erro interromper o código com a mensagem de "Fim" ou "Depurar".
Não posso utilizar o "on error next" porque irá executar um procedimento totalmente errado e não me trará um retorno satisfatório. Mas se alguém que entenda sobre o "on error next" melhor do que eu e conseguir me explicar a melhor forma de utilizar, será ótimo.

Alguém consegue me ajudar? Não precisa ser exatamente usando o "on error goto".

Sucesso a todos!

Se a informação foi útil, click no joinha ao lado do botão citar. Sucesso!!!

 
Postado : 26/08/2018 7:08 am
(@mprudencio)
Posts: 2749
Famed Member
 

O ideal seria vc postar sua planilha com o codigo.

Usar uma rotina de repetição provavelmente vai atender a sua necessidade.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 26/08/2018 8:38 am
(@salezzi)
Posts: 10
Active Member
Topic starter
 

O ideal seria vc postar sua planilha com o codigo.

Usar uma rotina de repetição provavelmente vai atender a sua necessidade.

Uma rotina de repetição não seria válida porque é uma consulta na internet via VBA. Quando preenchido o campo com Data e em pesquisar, se não existir nada nessa Data1, é para ir tentar nada Data2 e por último a Data3. Quando não localizado em alguma data, mostra erro e assim tenho que tentar outra data e se não localizar em nenhum das três, trará um resultado, mas se localizar em alguma das três datas, irá trazer outro resultado.

Se a informação foi útil, click no joinha ao lado do botão citar. Sucesso!!!

 
Postado : 26/08/2018 8:48 am
(@mprudencio)
Posts: 2749
Famed Member
 

Como eu disse se o ideal é vc postar sua planilha com o codigo.

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 26/08/2018 12:58 pm
(@salezzi)
Posts: 10
Active Member
Topic starter
 

Segue planilha em anexo

Não consigo completar ela porque preciso saber o que fazer após os erros para trazer as informações que preciso.

O VBA está interagindo com o Explorer.

Se a informação foi útil, click no joinha ao lado do botão citar. Sucesso!!!

 
Postado : 26/08/2018 1:56 pm
(@mprudencio)
Posts: 2749
Famed Member
 

Ve se ajuda!!!

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 26/08/2018 5:01 pm
(@salezzi)
Posts: 10
Active Member
Topic starter
 

Ve se ajuda!!!

MProdencio, o problema não é na planilha e sim quando localiza algum erro no site, então quando esse erro aparece, aí sim o VBA executa o próximo comando com a data e assim por diante...

Se a informação foi útil, click no joinha ao lado do botão citar. Sucesso!!!

 
Postado : 26/08/2018 6:54 pm
EdsonBR
(@edsonbr)
Posts: 1057
Noble Member
 

Bom dia, Salezzi

Não entrando no mérito do seu código mas respondendo especificamente ao que vc perguntou que pelo que entendi é: "como desviar para um segundo tratamento de erros quando um erro em tempo de execução ocorre no próprio tratamento de erros?"

Já adianto que essa é uma abordagem bastante incomum, mas vamos lá.

Vc fez uma tentativa usando Err.Clear para isso, mas o método Clear não faz nada além de zerar o número do erro e a string da mensagem do erro. No lugar disso, use:

'blábláblá
'...
Data2:
On Error Goto -1
'blábláblá... parcela do tratamento do primeiro erro aqui, mas que não gera um segundo erro
'...
On Error Goto Data3
'blábláblá... restante do tratamento do primeiro erro aqui, mas que pode gerar um segundo erro
'blábláblá...
Exit Sub
Data3:
'Tratamento do segundo erro aqui
'...
End Sub

 
Postado : 27/08/2018 6:43 am