VBA Ignorar Erro

Este tutorial demonstrará como garantir que o VBA ignore um erro ao executar seu código.

Às vezes, ao construir o código VBA, você realmente deseja que o VBA ignore uma linha de código quando ocorrer um erro. Na verdade, isso pode ser muito útil se, por exemplo, você quiser excluir uma planilha se ela existir, mas ignorar essa linha de código se a planilha não existir.

(Consulte nosso Guia de tratamento de erros para obter mais informações sobre erros VBA)

On Error Resume Next

Para ignorar uma linha de código em um procedimento, usamos o On Error Resume Next demonstração.

123456 Sub TestErrorIgnore ()On Error Resume NextActiveWorkbook.Sheets ("Sheet4"). SelecioneActiveSheet.Delete'mais código aquiEnd Sub

No exemplo acima, um On Error Resume Next declaração foi colocada no topo do procedimento. O código é então construído para selecionar a Planilha4 e excluí-lo.

No entanto, devido ao On Error Resume Next , se o código não encontrar a Planilha4, ele continuará para a próxima linha e excluirá qualquer planilha ativa que encontrar.

Isso pode ser muito perigoso se for apenas a Planilha 4 que você deseja excluir e não apenas a Planilha que está ativa. Para evitar esse erro, podemos definir uma variável para a planilha 4 e excluir apenas essa planilha SE ela existir.

1234567 Sub TestErrorIgnore ()Dim ws como planilhaOn Error Resume NextDefina ws = ActiveWorkbook.Sheets ("Sheet4")ws.Delete'mais código aquiEnd Sub

Agora, quando o código for executado, apenas a Planilha 4 será excluída E SE A Planilha4 realmente existe. Se a Folha 4 não existir, o VBA irá ignorar o erro e seguir em frente.

Outro exemplo disso é se você deseja excluir todas as planilhas de sua pasta de trabalho usando um loop. Como uma pasta de trabalho do Excel deve ter pelo menos uma planilha, o código excluirá todas as planilhas, exceto uma.

123456 Sub DeleteSheets ()Dim ws como planilhaPara cada ws em ActiveWorkbook.Sheetsws.DeletePróximo wsEnd Sub

O código acima irá parar com um erro.

Clicando Depurar nos levará ao código com a linha ofensiva destacada!

No entanto, adicionando o On Error Resume Next linha para o código evitará o erro e a rotina sempre deixará uma planilha na pasta de trabalho.

12345678 Sub DeleteSheets ()'adicionar linha de erro aquiOn Error Resume NextDim ws como planilhaPara cada ws em ActiveWorkbook.Sheetsws.DeletePróximo wsEnd Sub

No erro GoTo 0

Freqüentemente, se você usa On Error Resume Next para ignorar um erro, você deseja a interceptação de erro posteriormente no código ou deseja que seu código pare de ser executado se ocorrer um erro no futuro. Podemos redefinir o tratamento de erros para que o código mais uma vez seja interrompido em caso de erros, adicionando a linha On Error GoTo 0.

12345678 Sub TestErrorIgnore ()Dim ws como planilhaOn Error Resume NextDefina ws = ActiveWorkbook.Sheets ("Sheet4")ws.DeleteNo erro GoTo 0'mais código aquiEnd Sub
wave wave wave wave wave