Visual Basic for Applications:
Gerenciando erros
Como fazer:
No VBA, o tratamento de erros é geralmente implementado usando a instrução On Error
, que instrui o VBA sobre como proceder quando um erro ocorre. As estratégias mais comuns de tratamento de erros envolvem On Error GoTo
label, On Error Resume Next
e On Error GoTo 0
.
Exemplo 1: Usando On Error GoTo
Esta abordagem permite direcionar o programa para uma seção específica do código, rotulada imediatamente após encontrar um erro.
Sub ErrorHandlerExample()
On Error GoTo ErrHandler
Dim intDivision As Integer
intDivision = 5 / 0 ' Isso causará um erro de divisão por zero
Exit Sub
ErrHandler:
MsgBox "Ocorreu um erro: " & Err.Description, vbCritical, "Erro!"
Resume Next
End Sub
Neste exemplo, qualquer erro em tempo de execução acionará o salto para ErrHandler
, exibindo uma mensagem de erro e, em seguida, prosseguindo com a próxima linha após o erro.
Exemplo 2: Usando On Error Resume Next
Esta estratégia instrui o VBA a continuar executando a próxima linha de código mesmo que ocorra um erro, o que pode ser útil para erros considerados inofensivos ou quando se planeja tratar o erro mais tarde na execução.
Sub ResumeNextExample()
On Error Resume Next
Dim intDivision As Integer
intDivision = 5 / 0 ' Isso não fará o programa parar; erro é ignorado
' Verificar se ocorreu um erro
If Err.Number <> 0 Then
MsgBox "Ocorreu um erro: " & Err.Description, vbExclamation, "Erro Tratado"
' Resetar erro
Err.Clear
End If
End Sub
Neste caso, o programa não para por causa do erro; ele verifica se ocorreu um erro, trata-o se ocorreu, e então limpa o erro.
Aprofundamento
Historicamente, o tratamento de erros em linguagens de programação evoluiu de simples declarações goto para mecanismos mais sofisticados como exceções em linguagens como Java e C#. O tratamento de erros no VBA, embora não tão poderoso ou flexível quanto o tratamento moderno de exceções, cumpre seu propósito dentro do contexto da aplicação da linguagem em automatizar tarefas em ambientes do Microsoft Office.
A principal limitação do tratamento de erros no VBA reside em sua abordagem um tanto desajeitada e manual, requerendo a colocação cuidadosa do código de tratamento de erros e compreensão clara do fluxo de execução. Linguagens de programação modernas normalmente oferecem soluções mais elegantes, como blocos try-catch, que automaticamente direcionam o fluxo para o código de tratamento de erros sem a necessidade de verificações manuais ou saltos na execução do código.
Apesar dessas limitações, os mecanismos de tratamento de erros do VBA são adequados para a maioria das tarefas de automação e, quando usados corretamente, podem reduzir significativamente a probabilidade de erros não tratados causarem problemas para os usuários. Além disso, entender o tratamento de erros do VBA pode proporcionar insights sobre paradigmas de programação mais antigos e a evolução das estratégias de tratamento de erros no desenvolvimento de software.