VBA sobre declaraciones de error - Las 3 formas principales de manejar errores

Excel VBA en declaración de error

La declaración VBA On Error es un tipo de mecanismo de manejo de errores que se utiliza para guiar al código a hacer lo que si encuentra algún tipo de error, generalmente cuando un código encuentra un error, la ejecución se detiene pero con esta declaración en el código la ejecución del El código continúa como tiene un conjunto de instrucciones para hacer cuando encuentra un error.

Anticipar el error en el código lo convierte en un profesional en la codificación VBA. No puede hacer que el código sea 100% eficiente. Incluso si está seguro de su código de una forma u otra, puede arrojar un error.

Es casi una tarea imposible identificar y manejar todo tipo de error, pero tenemos diferentes formas de manejar un error en VBA. Mientras escribe el código, es posible que no anticipe el tipo de código de error que puede generar, pero si aparece algún error, pasará más tiempo depurando que escribiendo el código en sí.

¿Qué es un error?

Un error no es más que una línea de código que no se puede ejecutar debido a la funcionalidad o al código incorrecto. Así que intente anticipar el error y manejarlo.

Por ejemplo, si intenta eliminar la hoja que no está allí, obviamente no podemos ejecutar esa línea de código.

Un error es de tres tipos, uno es un error compilado debido a variables no declaradas. El segundo es un error de entrada de datos debido a entradas incorrectas por parte del codificador, y el tercero es un error de tiempo de ejecución debido a que VBA no puede reconocer la línea de código. Para intentar acceder o trabajar en una hoja de trabajo o libro de trabajo, que no está allí.

Pero tenemos una declaración en VBA para manejar todos estos tipos de errores, es decir, declaración "On Error".

Tipos de declaraciones de error

El punto clave del manejo de errores en VBA es la declaración "On Error". Por ejemplo, en caso de error, "reanudar la siguiente línea", "ir o saltar a otra línea", etc. …

La instrucción On Error tiene tres tipos de declaraciones.

  1. Ir a 0 significa que cada vez que se produce un error de tiempo de ejecución, Excel o VBA deben mostrar el cuadro de mensaje de error que indica el tipo de error que ha encontrado. Tan pronto como VBA ejecuta el código, deshabilita todos los controladores de errores en ese bloque en particular en el código.
  2. Reanudar siguiente significa que cada vez que ocurre el error, esta declaración le indica a Excel que ignore ese error y avance a (reanudar a continuación) la siguiente línea de código sin mostrar ningún mensaje de error. No significa que solucionará el error; más bien, simplemente ignora el error.
  3. Ir a (etiqueta) significa que cuando VBA encuentra un error, vaya a la etiqueta asignada. Esto hace que el código salte a la línea específica proporcionada por el codificador.

Las 3 formas principales de manejar errores en VBA

# 1 - En caso de error, reanudar a continuación

Suponga que está dividiendo el valor de 20 por 0 y ha declarado la variable para asignarle el resultado de la división.

Código:

Sub OnError_Example1 () Dim i As Integer i = 20/0 End Sub

Si ejecuta este código, arrojará el siguiente error.

Por lo tanto, no puede dividir ningún número por valor cero. El número de error en tiempo de ejecución es 11, es decir, división por cero.

Ahora agregaré una línea más al código.

Código:

Sub OnError_Example1 () Dim i As Integer, j As Integer i = 20/0 j = 20/2 End Sub

Ahora agregaré la declaración On error resume a continuación en la parte superior.

Código:

Sub OnError_Example1 () Dim i As Integer, j As Integer On Error Resume Next i = 20/0 j = 20/2 End Sub

Ahora, si ejecuto este código, no me dará ningún mensaje de error; más bien, ejecutará la siguiente línea de código, es decir, j = 20/2.

# 2 - En caso de error Ir a etiqueta

He declarado tres variables.

Código:

Sub OnError_Example1 () Dim i como entero, j como entero, k como entero

Para las tres variables, asignaré un cálculo de división.

Código:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5

El resultado de estos tres cálculos se mostrará en el cuadro de mensaje.

Código:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer i = 20/0 j = 20/2 k = 10/5 MsgBox "El valor de i es" & i & vbNewLine & "El valor de j es "& j & _ vbNewLine &" El valor de k es "& k & vbNewLine End Sub

Ahora intentaré ejecutar este código ya que el cálculo de "I" no es correcto. Obtendremos el error de tiempo de ejecución 11.

Ahora agregaré la declaración "En caso de error, reanudar a continuación".

Código:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error Resume Next i = 20/0 j = 20/2 k = 10/5 MsgBox "El valor de i es" & i & vbNewLine & "The el valor de j es "& j & _ vbNewLine &" El valor de k es "& k & vbNewLine End Sub

Si ejecuto esto, omitirá el cálculo "I" y ejecutará los dos cálculos restantes, y el resultado es el siguiente.

Ahora, en lugar de "En caso de error, reanudar a continuación", agregaré "En caso de error, ir a KCalculation".

Código:

Sub OnError_Example1 () Dim i As Integer, j As Integer, k As Integer On Error GoTo KCalculation: i = 20/0 j = 20/2 KCalculation: k = 10/5 MsgBox "El valor de i es" & i & vbNewLine & "El valor de j es" & j & _ vbNewLine & "El valor de k es" & k & vbNewLine End Sub
Nota: Aquí, "KCalculation" es el nombre de la etiqueta que le había dado; puede dar su propio nombre de etiqueta sin ningún espacio.

Ahora, si ejecuto esta línea de código, no saltará a la siguiente línea. En su lugar, saltará al nombre de la etiqueta que ingresé, es decir, "KCalcualtion". Aquí ignorará el error dado por "I", y además, no ejecutará el cálculo "j", sino que inmediatamente saltará a "KCalcualtion".

# 3 - Número de error de impresión en VBA

Al final del código, también podemos imprimir el número de error en un cuadro de mensaje separado. La siguiente línea de código hará este trabajo.

Código:

Err.Number

Ahora ejecutaré este código, el primer cuadro de mensaje mostrará los resultados del cálculo.

Haga clic en Aceptar. Mostrará un cuadro de mensaje más para mostrar el número de error.

Vamos 11; como resultado, es decir, División por cero.

También podemos obtener la descripción del error en lugar del número. Solo necesitamos cambiar el código. A continuación se muestra el código.

Código:

Err. Descripción

Mostrará una descripción como esta.

Cosas para recordar

  • Después de ingresar "En caso de error, reanudar siguiente" al final del código, no olvide agregar la declaración "En caso de error, ir a 0".
  • El nombre de la etiqueta debe ser el mismo en ambos lugares.
  • Los nombres de las etiquetas no necesitan definirse con mucha antelación.
  • Al final, siempre vea cuál fue el error que ocurrió a través del cuadro de mensaje separado.

Articulos interesantes...