Manipuladores de erro de macros do excel
manipuladores de erro
Conteúdo
- Video: #25 - curso de macros e excel vba - tratamento de erros (on error)
- On error goto somelabel
- On error resume next
- Video: aula 7 | macros no excel | manipulação de objetos na planilha | prof janderson garcia
- Em goto erro 0
- Video: macros: tratamento de erros
- Video: excel macros (vba) - aula 8 - usar procv (localizar) em macros / personalizar erros
On Error GoTo MyError
Sem manipuladores de erro, qualquer erro que ocorre em seu código irá pedir Excel para ativar uma mensagem de erro menos do que útil, que normalmente não irá transmitir claramente o que aconteceu. No entanto, com a ajuda de manipuladores de erro, você pode optar por ignorar o erro ou sair do código graciosamente com sua própria mensagem para o usuário.
Video: #25 - Curso de Macros e Excel VBA - Tratamento de Erros (On Error)
Existem três tipos de declarações erro em:
On Error GoTo SomeLabel: O código vai para o rótulo especificado.
On Error Resume Next: O erro é ignorado e o código retoma.
Em GoTo erro 0: VBA repõe a um comportamento de verificação de erros normal.
On Error GoTo SomeLabel
Às vezes, um erro no seu código significa que você precisa para sair normalmente o processo e dar a seus usuários uma mensagem clara. Nessas situações, você pode usar o On Error declaração GoTo para dizer Excel para saltar para uma determinada linha de código.
Por exemplo, na seguinte pequeno pedaço de código, você dizer Excel para dividir o valor na célula A1 do valor na célula A2, e em seguida, coloque a resposta na célula A3. Fácil. O que poderia dar errado?
Sub Macro1 () Range ("A3") .Value = Gama ("A1").Faixa de valor("A2") .ValueEnd Sub
Como se vê, dois grandes coisas podem dar errado. Se a célula A2 contém 0, você tem uma divisão por 0 erro. Se a célula A2 contém um valor não numérico, você recebe um erro de incompatibilidade de tipo.
Para evitar uma mensagem de erro desagradável, você pode dizer Excel que On Error, você quer a execução de código para saltar para o rótulo chamado myExit.
No código a seguir, o rótulo myExit é seguida por uma mensagem para o usuário que dá conselhos amigáveis em vez de uma mensagem de erro desagradável. Além disso, observe a linha Exit Sub antes do rótulo myExit, o que garante que o código simplesmente saída se nenhum erro for encontrado:
Sub Macro1 () On Error GoTo MyExitRange ("A3") .Value = Gama ("A1").Faixa de valor("A2") SubMyExit .ValueExit: MsgBox "Por favor uso válido números diferentes de zero"End Sub
On Error Resume Next
Às vezes, você quer Excel para ignorar um erro e simplesmente retomar a execução do código. Nessas situações, você pode usar o On Error Resume Next.
Video: Aula 7 | Macros no Excel | Manipulação de objetos na planilha | Prof Janderson Garcia
Por exemplo, o seguinte pedaço de código é utilizado para excluir um arquivo chamado GhostFile.exe do diretório C: Temp. Após o arquivo é excluído, uma caixa de mensagem agradável informa ao usuário que o arquivo é ido:
Sub Macro1 () Mate "C: TempGhostFile.exe"MsgBox "Arquivo foi apagado."End Sub
O código funciona muito bem se há de fato um arquivo a ser excluído. Mas se por algum motivo o arquivo chamado GhostFile.exe não existe na unidade C: Temp, um erro é lançado.
Neste caso, você não se importa se o arquivo não está lá porque você estava indo para excluí-lo de qualquer maneira. Então você pode simplesmente ignorar o erro e seguir em frente com o código.
Ao utilizar o On Error Resume Next, o código segue seu curso ou não o arquivo alvo existe:
Sub Macro1 () On Error Resume NextKill "C: TempGhostFile.exe"MsgBox "Arquivo foi apagado."End Sub
Em GoTo erro 0
Ao usar certas declarações de erro, pode ser necessário redefinir o comportamento de verificação de erros de VBA. Para entender o que isso significa, dê uma olhada no próximo exemplo.
Video: Macros: Tratamento de Erros
Aqui, você primeiro quer apagar um arquivo chamado GhostFile.exe do diretório C: Temp. Para evitar erros que podem derivam do fato de que o arquivo alvo não existe, você usa o On Error Resume Next. Depois disso, você tenta fazer alguma matemática suspeito dividindo 100 / Mike:
Sub Macro1 () On Error Resume NextKill "C: TempGhostFile.exe"Alcance("A3") .Value = 100 / "Mike"End Sub
A execução deste pedaço de código deve gerar um erro devido à matemática difusa, mas isso não acontece. Por quê? Porque a última instrução que você deu ao código era On Error Resume Next. Qualquer erro encontrado depois que a linha é efetivamente ignorado.
Video: Excel Macros (VBA) - Aula 8 - Usar PROCV (localizar) em macros / Personalizar erros
Para resolver esse problema, você pode usar o On Error GoTo 0 declaração para retomar o comportamento de verificação de erros normal:
Sub Macro1 () On Error Resume NextKill "C: TempGhostFile.exe"On Error GoTo 0range ("A3") .Value = 100 / "Mike"End Sub
Este código irá ignorar erros até o On Error GoTo 0 comunicado. Após essa declaração, o código de volta para a verificação de erros normal e desencadeia o erro esperado decorrente da matemática difusa.