Consejos infalibles para manejar errores en la programación de Excel VBA

El manejo de errores es un aspecto vital de la programación de Excel VBA, especialmente cuando los usuarios ingresan valores no válidos en una hoja de cálculo. Aquí hay una guía sobre cómo manejar los errores que ocurren con frecuencia en Excel VBA.

El manejo de errores no solo evita que el programa se bloquee debido a una entrada incorrecta, sino que también:

Al manejar bien los errores, los programadores pueden asegurarse de que el programa funcione sin problemas y que los usuarios tengan una mejor experiencia.

Excel VBA 365

En el mundo de la programación de Excel VBA, los errores pueden aparecer cada vez que un usuario ingresa un valor no válido en una hoja de cálculo. Estos errores, si no se manejan correctamente, pueden hacer que el programa se detenga o dé resultados no deseados.

En este artículo, Bardimin discutirá varios métodos para identificar y corregir errores comunes en Excel VBA, además de ofrecer soluciones prácticas para mantener el programa funcionando sin problemas a pesar de las interrupciones.

Tipos de errores y cómo escribir errores en el control de código

El manejo de errores en Excel VBA es esencial para garantizar que el programa se ejecute correctamente y brinde una experiencia de usuario positiva. Estos son algunos tipos comunes de control de errores que se usan en Excel VBA:

1. On Error GoTo

Este tipo de manejo de errores se utiliza para dirigir un programa a un fragmento específico de código cuando se produce un error. Una vez detectado, el flujo del programa se moverá a una etiqueta específica que se haya definido para manejar el error.

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

En este ejemplo, si se produce un error (por ejemplo, división por cero), el programa saltará a la  etiqueta err_handler y mostrará un mensaje de error.

2. On Error Resume Next

Con On Error Resume Next, el programa ignorará el error y continuará ejecutando el código en la siguiente línea. Esto es útil para errores no críticos que no requieren un control especial.

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

Aquí, incluso si hay una división por cero, el programa no se detendrá y la ejecución continuará hasta la siguiente línea.

El uso de Resume Next debe hacerse con precaución, ya que puede ocultar errores importantes.

3. On Error GoTo 0

En caso de error, GoTo 0 se utiliza para deshabilitar el control de errores que estaba habilitado anteriormente. Después de usar este comando, si hay un error en la siguiente línea, el programa se detendrá y mostrará un mensaje de error estándar.

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

Después de usar On   Error   GoTo   0, si ocurre un error, el programa se detendrá como de costumbre.

4. On Error GoTo -1

Este tipo se utiliza para restablecer el estado de control de errores que se aplica en el ámbito del procedimiento actual. Los errores que se manejaron anteriormente ya no afectarán el flujo del 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

Con On Error GoTo -1, se eliminará el manejo de errores anterior, por lo que puede configurar un nuevo manejo si es necesario.

5. Nested Error Handling

Puede utilizar varios niveles de control de errores de forma anidada. Esto le permite manejar diferentes tipos de errores por separado.

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. Validación de entrada mediante IsNumeric

Antes de realizar una operación aritmética, puede validar la entrada utilizando la función IsNumeric para asegurarse de que los datos introducidos son 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

Conclusión

El manejo de errores es una parte importante de la programación en Excel VBA. Al implementar varios tipos de manejo de errores, los programadores pueden crear aplicaciones más robustas y fáciles de usar, así como reducir la probabilidad de bloqueos debido a entradas no válidas.

Artículos más recientes