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

Комментарии • 15

  • @explorarexcel
    @explorarexcel  3 года назад +2

    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

  • @rafaelpereira1711
    @rafaelpereira1711 8 месяцев назад

    Top muito bem explicado

  • @leandrosantoscosta9621
    @leandrosantoscosta9621 2 года назад

    Sensacional como sempre, simples e objetivo, vcs estão de parabéns pelas aulas!!!!!

    • @explorarexcel
      @explorarexcel  2 года назад

      Muito obrigado pelo seu elogio. Tudo de bom e boas festas.
      Nilton Castro.

  • @Leandro2115
    @Leandro2115 3 года назад

    Simplesmente a melhor explicação sobre o tema.
    Demonstrou várias formas de tratamento.
    Parabéns pelo conteudo e didática.

  • @ronaldoleite1746
    @ronaldoleite1746 9 месяцев назад

    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.

    • @explorarexcel
      @explorarexcel  9 месяцев назад

      Que ótimo, Ronaldo! Estou produzindo alguns vídeos Short com bons conteúdos também. Aproveite.

  • @josesilvasobrinho8538
    @josesilvasobrinho8538 2 года назад

    Excelentes dicas. Certamente ajudarão a evitar muitas dores de cabeça.

    • @explorarexcel
      @explorarexcel  2 года назад

      Essa é a intenção, José.
      Obrigado pelo comentário;
      Nilton Castro.

  • @thaiscristina3082
    @thaiscristina3082 3 года назад

    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

    • @explorarexcel
      @explorarexcel  3 года назад +1

      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.

    • @explorarexcel
      @explorarexcel  3 года назад +1

      Thais, não se esqueça de inserir os dois pontos na segunda expressão, veja:
      PontoA:

    • @thaiscristina3082
      @thaiscristina3082 3 года назад

      Muito obrigada ajudou bastante essa dica deu certo. :)