VBA en caso de error

VBA On Error es un método fácil para manejar excepciones inesperadas en macros de Excel. Se sabe que no podemos escribir código sin ningún error. A veces, escribir código grande puede darnos el error incluso en el momento de la compilación. Para evitar este tipo de situación, agregamos un mensaje de error que, en lugar de darnos la respuesta correcta o el código de error, nos mostrará el mensaje con el código de error. Parece que obtuvimos el resultado de nuestro cálculo, pero es el código de error el que se imprimirá.

¿Cómo usar Excel VBA en la declaración de error en Excel?

Hay 3 formas de error en VBA. Comprendamos diferentes formas con algunos ejemplos.

Ejemplo 1

El primer tipo de error es el error de compilación de código que se produce cuando un código no está declarado o es imposible. Para comprender más, utilizaremos una expresión matemática simple de la división. Para esto, vaya al menú Insertar de VBA y seleccione Módulo como se muestra a continuación.

Ahora abra Subcategoría y agregue cualquier nombre. Como estamos usando On Error, hemos nombrado lo mismo.

 Sub OnError () End Sub 

Ahora defina 2 o 3 enteros. Aquí tenemos tomando X e Y como enteros.

 Sub OnError () Dim X como entero, Y como entero, Z como entero End Sub 

Ahora, como se discutió anteriormente, calcularemos la expresión matemática de división. Para X pondremos un carácter en Numerador y lo dividiremos en 0. E Y será 20/2, que son números completos.

 Sub OnError () Dim X como número entero, Y como número entero X = Prueba / 0 Y = 20/2 Fin Sub 

Ahora ejecute el código utilizando la tecla F5 o haciendo clic en el botón de reproducción como se muestra a continuación. Obtendremos el error de tiempo de ejecución 6, que muestra el error Texto sobre número.

Ahora, para anular este error, agregaremos una línea en Reanudar error siguiente antes de escribir el código matemático. Saltará el código de error pero no podremos ver el resultado del segundo código matemático. Esto solo oculta el mensaje de error si varias líneas de códigos se muestran a continuación. Ahora intente ejecutar el código también.

 Sub OnError () Dim X como entero, Y como entero en error Reanudar siguiente X = Prueba / 0 Y = 20/2 MsgBox X MsgBox Y End Sub 

Ahora, para anular este error, agregaremos una línea en Reanudar error siguiente antes de escribir el código matemático. Saltará el código de error pero no podremos ver el resultado del segundo código matemático. Esto solo oculta el mensaje de error si varias líneas de códigos se muestran a continuación. Ahora intente ejecutar el código también.

Ejemplo # 2

En este ejemplo, consideraremos esa división matemática que da un resultado infinito pero en la codificación, dará el resultado # DIV / 0. Para demostrar esto, consideraremos un número entero más Z junto con X e Y en la subcategoría como se muestra a continuación.

 Sub OnError () Dim X como entero, Y como entero, Z como entero End Sub 

Ahora encuadre todos los enteros X, Y y Z con una expresión matemática de división y para imprimir use la función MsgBox en VBA del resultado de cada entero.

A continuación para Integer X hemos dividido 10 por 0, 20 por 2 y 30 por 4.

 Sub OnError () Dim X como número entero, Y como número entero, Z como número entero X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Ahora ejecute el código con la tecla F5 o manualmente como se muestra a continuación.

Como podemos ver en la captura de pantalla anterior, Error 11 en tiempo de ejecución, lo que significa que el error está relacionado con el número. Ahora para superar esto, agregue una línea en Error Reanudar Siguiente antes de la expresión matemática como se muestra a continuación.

 Sub OnError () Dim X como entero, Y como entero, Z como entero en error Reanudar siguiente X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Ahora, si ejecutamos el código, obtendremos cero para el primer entero X y para Y y Z obtendremos respuestas de división respectivas como se muestra a continuación.

Ejemplo # 3

El segundo tipo de error se ve cuando ingresamos una entrada de datos incorrecta en el código. Para esto, consideraremos 3 enteros X, Y y Z abriendo la Subcategoría en VBA como se muestra a continuación.

 Sub OnError () Dim X como entero, Y como entero, Z como entero End Sub 

Ahora también considere la misma división matemática que hemos visto en el ejemplo anterior.

 Sub OnError () Dim X como número entero, Y como número entero, Z como número entero X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Si ejecutamos el código, obtendremos el mismo mensaje de error del error de tiempo de ejecución 11.

Ahora para anular este error, use el texto On Error GoTo con la palabra "" Resultado para omitir el mensaje de error y obtener la salida que funciona bien como se muestra a continuación.

 Sub OnError () Dim X como número entero, Y como número entero, Z como número entero en caso de error Ir a Z Resultado: X = 10/0 Y = 20/2 Z Resultado: Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Ahora ejecuta el código nuevamente. Obtendremos el mismo resultado que en el ejemplo anterior.

En Error GoTo ZResult nos ayuda a saltar directamente del entero de punto de resultado mencionado como lo hicimos para el entero Z.

Ejemplo # 4

En el tercer tipo de error cuando ejecutamos el código y VBA no puede entender la línea de código. Esto se puede hacer con la ayuda del código On Error Resume Next junto con MsgBox Err.Number . Considere los mismos datos que se usan en los ejemplos anteriores. Volveremos a ver los mismos 3 enteros X, Y y Z como se muestra a continuación.

 Sub OnError () Dim X como entero, Y como entero, Z como entero End Sub 

Y para imprimir la salida del resultado, permita cuadros de mensaje para todos los enteros como salida.

 Sub OnError () Dim X como número entero, Y como número entero, Z como número entero X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Ahora, si ejecutamos el código completo, obtendremos un mensaje de error de error matemático Error de tiempo de ejecución 11.

Ahora para anular este error, usaremos On Error Resume Next.

 Sub OnError () Dim X como entero, Y como entero, Z como entero en error Reanudar siguiente X = 10/0 Y = 20/2 Z = 30/4 MsgBox X MsgBox Y MsgBox Z End Sub 

Y ejecuta el código. Esto dará resultado de uso en una línea matemática válida como se muestra a continuación.

Ahora agregue más la línea de código ZResult antes de la expresión matemática de división entera Z y agregue la línea de código MsgBox Err.Number al final del código como se muestra a continuación.

 Sub OnError () Dim X como número entero, Y como número entero, Z como número entero en error Reanudar siguiente X = 10/0 Y = 20/2 ZResultado: Z = 30/4 MsgBox X MsgBox Y MsgBox Z MsgBox Err.Number End Sub 

Ahora ejecute el código utilizando la tecla F5 o presionando el botón de reproducción como se muestra a continuación.

Como podemos ver en las capturas de pantalla anteriores. El primer cuadro de mensaje tiene 0, que anula la expresión matemática incorrecta. y tienen un resultado de división de enteros Y y Z. Y el último cuadro de mensaje tiene el código de error de tiempo de ejecución 11, que probablemente sea el código de error de las expresiones de división de enteros X.

Ventajas de VBA en caso de error

  • Podemos calcular cualquier fórmula matemática incluso si es incorrecta.
  • Para estructuras de codificación más grandes donde hay posibilidades o errores, el uso de estos métodos puede dar un resultado correcto incluso entre la línea de códigos.
  • Esto proporciona un mejor resultado en comparación con el resultado obtenido de los cálculos normales de Excel.

Cosas para recordar

  • Siempre guarde el archivo en un archivo Excel habilitado para macros para que podamos usar el código VBA creado muchas y varias veces.
  • Siempre compile el código escrito antes de implementarlo con cualquier requisito de Excel.
  • Si es necesario, asigne el código escrito a cualquier botón para que podamos hacer clic rápidamente en el botón y ejecutar el código.

Puede descargar esta plantilla de Excel de VBA On Error aquí - Plantilla de Excel de VBA On Error

Artículos recomendados

Esta ha sido una guía para Excel VBA en caso de error. Aquí discutimos cómo usar VBA en la declaración de error junto con algunos ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. ¿Cómo usar la función VBA TRIM?
  2. Formato de número en VBA
  3. Guía para Excel VBA Do While Loop
  4. ¿Cómo usar la función de búsqueda de VBA?

Categoría: