A continuación vamos a ver dos programas en Excel VBA. Un programa simplemente hace caso omiso de los errores. El otro programa continúa la ejecución en una línea especificada al chocar contra un error.

Situación:

Ambos programas calcular la raíz cuadrada de números.

Error Handling in Excel VBA

Raíz cuadrada 1 Añadir las siguientes líneas de código para el botón de comando ‘Raíz cuadrada 1’.

  1. En primer lugar, declaramos dos objetos Range. Llamamos a la gama de objetos RNG y celular.

Dim rng As Range, cell As Range
  1. inicializar el generador de números aleatorios objeto Range con el rango seleccionado.

Set rng = Selection
  1. Queremos calcular la raíz cuadrada de cada celda de un rango seleccionado al azar (este rango puede ser de cualquier tamaño). En Excel VBA, puede utilizar el siguiente bucle For Each para esto. Añadir las siguientes líneas de código:

For Each cell In rng

Next cell

Nota: RNG y la célula se eligen al azar aquí, se puede usar cualquier nombre.

Recuerde hacer referencia a estos nombres en el resto de su código.

  1. Añadir la siguiente línea de código para el bucle.

On Error Resume Next
  1. A continuación, calcular la raíz cuadrada de un valor. En Excel VBA, podemos utilizar la función Sqr para esto. Agregue la siguiente línea de código para el bucle.

cell.Value = Sqr(cell.Value)
  1. Cierre el Editor de Visual Basic y probar el programa.

Resultado:

On Error Resume Next Result

Conclusión: Excel VBA ha ignorado las células que contienen valores no válidos, tales como números negativos y texto. Sin utilizar el ‘On Error Resume Next’ declaración se podrían obtener dos errores. Tener cuidado de usar sólo el ‘On Error Resume Next’ declaración cuando se está haciendo caso omiso seguro de errores está bien.

Raíz cuadrada de 2 Añadir las siguientes líneas de código para el botón de comando ‘Raíz cuadrada de 2’.

  1. El mismo programa que la raíz cuadrada 1 pero sustituyendo ‘On Error Resume Next’ con:

On Error GoTo InvalidValue:

Nota: InvalidValue se elige al azar aquí, se puede usar cualquier nombre.

Recuerde hacer referencia a este nombre en el resto de su código.

  1. Fuera del bucle For Each A continuación, primero agregue la siguiente línea de código:

Exit Sub

Sin esta línea, se ejecutará el resto de la (código de error) de código, incluso si no hay ningún error! 3. Excel VBA continúa la ejecución en la línea que comienza con ‘InvalidValue:’ al chocar contra un error (no se olvide de los dos puntos). Agregue la siguiente línea de código:

InvalidValue:
  1. Mantenemos nuestro código simple error por ahora. Le mostramos un MsgBox con un poco de texto y la dirección de la celda en la que se produjo el error.

MsgBox "can't calculate square root at cell " & cell.Address
  1. Agregue la línea siguiente para instruir a Excel VBA para reanudar la ejecución después de ejecutar el código de error.

Resume Next
  1. Cierre el Editor de Visual Basic y probar el programa.

Resultado:

On Error GoTo Result

On Error GoTo Result

On Error GoTo Result