No VBA (Visual Basic for Applications), a função `Erro` não existe especificamente, mas você pode lidar com erros de maneira eficaz utilizando a estrutura de tratamento de erros. Uma das abordagens mais comuns para tratar erros em VBA é usando o bloco `On Error`. Vou explicar como você pode usar essa estrutura para gerenciar erros no seu código.
Utilizando `On Error` para Tratamento de Erros
Sub ExemplosDeErro()
On Error Resume Next
Dim num As Integer
num = 1 / 0 ' Isso causará um erro de divisão por zero
' O código continuará a ser executado, mas num será indefinido
If Err.Number <> 0 Then
MsgBox "Ocorreu um erro: " & Err.Description
Err.Clear ' Limpa o erro após o tratamento
End If
End Sub
Sub TratamentoComGoTo()
On Error GoTo TratarErro
Dim num As Integer
num = 1 / 0 ' Isso causará um erro de divisão por zero
Exit Sub ' Certifica-se de sair antes de passar pelo rótulo de erro
TratarErro:
MsgBox "Erro detectado: " & Err.Description
Err.Clear ' Limpa o erro
End Sub
Sub DesativarTratamento()
On Error GoTo TratarErro
Dim num As Integer
num = 1 / 0
Exit Sub
TratarErro:
MsgBox "Erro detectado: " & Err.Description
On Error GoTo 0 ' Desativa o tratamento de erro
num = 1 ' Continua a execução sem erro
End Sub
- On Error Resume Next: Ignora o erro e continua a execução do próximo comando. Isso pode ser útil quando você espera que alguns erros ocorram ocasionalmente e não queira que o programa pare devido a eles.
- On Error GoTo: Redireciona para um rótulo específico onde o erro é tratado.
- On Error GoTo 0: Desativa qualquer tratamento de erro no procedimento atual.
Atributos Úteis do Objeto `Err`
- Err.Number: Retorna o número do erro.
- Err.Description: Retorna uma descrição do erro.
- Err.Clear: Limpa o erro atual.
É importante sempre limpar o erro (`Err.Clear`) após tratá-lo, especialmente se você continuar a execução do código. Isso ajuda a evitar ambiguidades na detecção de erros no restante do seu código.
Essas são as formas gerais de gerenciamento de erros em VBA. Utilize-as conforme a necessidade do seu projeto para capturar e responder a erros de forma eficaz.