Tratamento de erros no Excel VBA - On Error GoTo
HTML-код
- Опубликовано: 15 сен 2024
- O tratamento de erro do Excel VBA (On Error GoTo Rótulo) irá impedir que seus códigos sejam interrompidos por possíveis erros.
Assim, com essa expressão, você poderá redirecionar a execução de seus códigos para tratar a situação da melhor maneira possível.
Além disso, veja como fazer mais de um tratamento dentro de um mesmo código VBA.
O nosso canal tem como objetivo ensinar Excel e VBA a internautas com pouco ou nenhum conhecimento sobre o assunto. Oferecemos, entre outras coisas, cursos de Excel básico, intermediário e avançado. Isso inclui exercícios variados e criativos onde você poderá aplicar o seu conhecimento adquirido em situações reais.
A importância dessa ferramenta é fundamental em qualquer profissão. Isso porque todo ambiente de trabalho necessita, de uma forma ou de outra, executar pequenos controles e tarefas repetitivas. Portanto, não perca tempo. Não fique para trás. Venha conosco se aventurar nessa ferramenta.
DOWNLOAD ARQUIVOS GRÁTIS:
drive.google.c...
PLAYLIST PERGUNTAS DOS INTERNAUTAS:
• Excel VBA - É possível...
PLAYLIST COMO PENSA UM PROGRAMADOR:
• Como pensa ( raciocíni...
PLAYLIST DICAS RÁPIDAS:
• Para que serve a instr...
PLAYLIST PROCEDIMENTOS:
• É possível abrir uma m...
PLAYLIST HORÁRIO ESCOLAR 2021:
• Horário escolar no exc...
PLAYLIST FORMULÁRIOS:
• Como criar formulário ...
CÓDIGO DESTE VÍDEO:
Sub Erro_02()
Dim Resultado As Currency
Dim Lin As Integer
On Error GoTo Erro
For Lin = 3 To 15
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
Erro:
MsgBox "Atenção, divisão impossível."
End Sub
'-------------------------------------------------------
Sub Erro_03()
Dim Resultado As Currency
Dim Lin As Integer
On Error GoTo MeuErro
For Lin = 3 To 15
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
MeuErro:
Resultado = "0"
Resume Next
End Sub
'-------------------------------------------------------
Sub Erro_04()
Dim Resultado As Currency
Dim Lin As Integer
On Error Resume Next
For Lin = 3 To 15
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
MeuErro:
Cells(Lin, 1) = "10"
Resume 0
End Sub
'-------------------------------------------------------
Sub Erro_06()
Dim Resultado As Currency
Dim Lin As Integer
On Error GoTo Area_01
For Lin = 3 To 8
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
On Error GoTo 0
On Error GoTo Area_02
For Lin = 9 To 14
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
Area_01:
MsgBox "Erro na área 01"
Cells(Lin, 1) = "10"
Resume 0
Area_02:
MsgBox "Erro na área 02"
Cells(Lin, 1) = "2"
Resume 0
End Sub
SEGUEM ABAIXO OS CÓDIGOS DESTE VÍDEO:
Sub Erro_02()
Dim Resultado As Currency
Dim Lin As Integer
On Error GoTo Erro
For Lin = 3 To 15
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
Erro:
MsgBox "Atenção, divisão impossível."
End Sub
'-------------------------------------------------------
Sub Erro_03()
Dim Resultado As Currency
Dim Lin As Integer
On Error GoTo MeuErro
For Lin = 3 To 15
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
MeuErro:
Resultado = "0"
Resume Next
End Sub
'-------------------------------------------------------
Sub Erro_04()
Dim Resultado As Currency
Dim Lin As Integer
On Error Resume Next
For Lin = 3 To 15
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
MeuErro:
Cells(Lin, 1) = "10"
Resume 0
End Sub
'-------------------------------------------------------
Sub Erro_06()
Dim Resultado As Currency
Dim Lin As Integer
On Error GoTo Area_01
For Lin = 3 To 8
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
On Error GoTo 0
On Error GoTo Area_02
For Lin = 9 To 14
Resultado = Cells(2, 5) / Cells(Lin, 1)
Cells(Lin, 2) = Resultado
Next Lin
Exit Sub
Area_01:
MsgBox "Erro na área 01"
Cells(Lin, 1) = "10"
Resume 0
Area_02:
MsgBox "Erro na área 02"
Cells(Lin, 1) = "2"
Resume 0
End Sub
Top muito bem explicado
Obrigado 👍
Sensacional como sempre, simples e objetivo, vcs estão de parabéns pelas aulas!!!!!
Muito obrigado pelo seu elogio. Tudo de bom e boas festas.
Nilton Castro.
Simplesmente a melhor explicação sobre o tema.
Demonstrou várias formas de tratamento.
Parabéns pelo conteudo e didática.
Obrigado pelo elogio, Leandro.
Aulaça. Faz muito tempo que estudo vba aqui no RUclips. Fiz muitos cursos mas nunca aprendi tanto como estou aprendendo em suas aulas. Parabéns caríssimo professor.
Que ótimo, Ronaldo! Estou produzindo alguns vídeos Short com bons conteúdos também. Aproveite.
Excelentes dicas. Certamente ajudarão a evitar muitas dores de cabeça.
Essa é a intenção, José.
Obrigado pelo comentário;
Nilton Castro.
Ola obrigada pelo vídeo ajudou muito.
Tenho uma dúvida veja se pode me ajudar. No tratamento do erro para que a macro retorne de onde parou usa o resume next. Porem eu queria que ela voltasse em um ponto específico após o tratamento de erro. Há algum comando/código para isso? Para referenciar o ponto específico que desejo que volte? Desde já agradeço
Thais, é possível sim. Você usará a expressão "Resume rótulo" onde "rótulo" será uma palavra qualquer: No exemplo abaixo usei um rótulo chamado "PontoA" que acabei de inventar.
Meu erro:
Msgbox "O seu código apresentou erro!"
Resume PontoA
Na situação acima, além da expressão "Resume PontoA", você criará uma segunda expressão chamada "PontoA:" em qualquer lugar de seu código.
Como resultado, a expressão "Resume PontoA" jogará a execução do VBA para a linha da expressão "PontoA".
Qualquer dúvida, entre em contato;
Nilton Castro.
Thais, não se esqueça de inserir os dois pontos na segunda expressão, veja:
PontoA:
Muito obrigada ajudou bastante essa dica deu certo. :)