Dicas infalíveis para lidar com erros na programação VBA do Excel

O tratamento de erros é um aspecto vital da programação VBA do Excel, especialmente quando os usuários inserem valores inválidos em uma planilha. Aqui está um guia sobre como lidar com erros frequentes no Excel VBA.

O tratamento de erros não apenas evita que o programa trave devido à entrada incorreta, mas também:

  • Fornecer feedback claro aos usuários sobre os erros que ocorrem
  • Facilite a manutenção e a solução de problemas de código

Ao lidar bem com os erros, os programadores podem garantir que o programa funcione sem problemas e que os usuários tenham uma experiência melhor.

Excel VBA 365

No mundo da programação VBA do Excel, os erros podem aparecer sempre que um usuário insere um valor inválido em uma planilha. Esses erros, se não forem tratados corretamente, podem fazer com que o programa pare ou dê resultados indesejados.

Neste artigo, Bardimin discutirá vários métodos para identificar e corrigir erros comuns no Excel VBA, além de oferecer soluções práticas para manter o programa funcionando sem problemas, apesar das interrupções.

Tipos de erros e como escrever erros Manipulando código

O tratamento de erros no Excel VBA é essencial para garantir que o programa seja executado corretamente e forneça uma experiência positiva ao usuário. Aqui estão alguns tipos comuns de tratamento de erros usados no Excel VBA:

1. On Error GoTo

Esse tipo de tratamento de erros é usado para direcionar um programa para uma parte específica do código quando ocorre um erro. Uma vez detectado, o fluxo do programa será movido para um rótulo específico que foi definido para lidar com o erro.

Private Sub CommandButton1_Click()
	On Error GoTo err_handler
	num1 = InputBox("Enter the first number")
	num2 = InputBox("Enter the second number")
	MsgBox num1 / num2
	Exit Sub

err_handler:
	MsgBox "Invalid division, please try again"
End Sub

Neste exemplo, se ocorrer um erro (por exemplo, divisão por zero), o programa pulará para o  rótulo err_handler e exibirá uma mensagem de erro.

2. On Error Resume Next

Com On Error Resume Next, o programa ignorará o erro e continuará executando o código na próxima linha. Isso é útil para erros não críticos que não exigem tratamento especial.

Private Sub CommandButton2_Click()
	On Error Resume Next
	num1 = InputBox("Enter the first number")
	num2 = InputBox("Enter the second number")
	MsgBox num1 / num2
End Sub

Aqui, mesmo que haja uma divisão por zero, o programa não será interrompido e a execução continuará para a próxima linha.

O uso de Resume Next deve ser feito com cautela, pois pode ocultar erros importantes.

3. On Error GoTo 0

Em caso de erro, GoTo 0 é usado para desabilitar o tratamento de erros que foi habilitado anteriormente. Depois de usar este comando, se houver um erro na próxima linha, o programa irá parar e exibir uma mensagem de erro padrão.

Sub ExampleGoToZero()
	On Error Resume Next ' Ignore errors
	Dim result As Double
	result = 5 / 0 ' Errors are ignored
	On Error GoTo 0 ' Disable error handling
	MsgBox result
	result = 5 / 0 ' This will cause the program to terminate since errors are no longer ignored
End Sub

Depois de usar On Error GoTo 0, se ocorrer um erro, o programa será interrompido normalmente.

4. On Error GoTo -1

Esse tipo é usado para redefinir o status de tratamento de erros que se aplica ao escopo do procedimento atual. Os erros que foram tratados anteriormente não afetarão mais o fluxo do programa.

Sub ExampleGoToMinusOne()
	On Error GoTo ErrorHandler
	Dim result As Double
	result = 5 / 0 ' This causes an error
	Exit Sub

	ErrorHandler:
	MsgBox "Error handled."
	On Error GoTo -1 ' Clears previous error status
	' If the error occurs again, handling must be reset
End Sub

Com On Error GoTo -1, o tratamento de erros anterior será removido, para que você possa configurar um novo tratamento, se necessário.

5. Nested Error Handling

Você pode usar vários níveis de tratamento de erros de maneira aninhada. Isso permite que você lide com diferentes tipos de erros separadamente.

Private Sub CommandButton4_Click()
	Dim firstNum, secondNum As Double
	On Error GoTo error_handler1
	firstNum = InputBox("Enter the first number")

	On Error GoTo error_handler2
	secondNum = InputBox("Enter the second number")

	MsgBox firstNum / secondNum
	Exit Sub

error_handler2:
	MsgBox "Error! You tried to divide a number by zero! Try again!"

	Exit Sub

error_handler1:
	MsgBox "You did not enter a number! Try again!"
End Sub

6. Validação de entrada usando IsNumeric

Antes de executar uma operação aritmética, é possível validar a entrada usando a função IsNumeric para garantir que os dados entrados sejam numéricos.

Private Sub CommandButton5_Click()
	Dim userInput As String
	userInput = InputBox("Enter your age:")

	If Not IsNumeric(userInput) Then
	MsgBox "The input you entered is invalid. Please enter a number."
	Exit Sub
	End If

	MsgBox "Your age is " & userInput & " years."
End Sub

Conclusão

O tratamento de erros é uma parte importante da programação no Excel VBA. Ao implementar vários tipos de tratamento de erros, os programadores podem criar aplicativos mais robustos e fáceis de usar, além de reduzir a probabilidade de travamentos devido a entradas inválidas.

Últimos artigos