Controladores de errores para las macros de excel

controladores de errores le permiten especificar lo que sucede cuando se produce un error mientras que el código de macro Excel ejecuta. controladores de errores son líneas similares a las siguientes:

On Error Goto MyError

Sin controladores de errores, cualquier error que se produce en su código le pedirá Excel para activar un mensaje de error de menos-que-útiles que normalmente no transmitir claramente lo que sucedió. Sin embargo, con la ayuda de controladores de errores, se puede optar por ignorar el error o salir del código de gracia con su propio mensaje al usuario.

Hay tres tipos de instrucciones On Error:

  • On Error Goto SomeLabel: El código salta a la etiqueta especificada.

  • On Error Resume Next: El error es ignorado y se reanuda el código.

  • On Error Goto 0: VBA restablece a un comportamiento normal de comprobación de errores.

On Error Goto SomeLabel

A veces un error en su código significa que necesita para salir con gracia el procedimiento y dar a sus usuarios un mensaje claro. En estas situaciones, se puede utilizar la instrucción On Error GoTo para contar Excel para saltar a una determinada línea de código.

Video: Errores en Macros

Por ejemplo, en la siguiente pequeña pieza de código, le dice a Excel para dividir el valor de la celda A1 por el valor de la celda A2, y luego coloca el resultado en la celda A3. Fácil. ¿Qué puede salir mal?

Sub Macro1 () Range ("A3") .Value = Rango ("A1").Rango de valores("A2") .ValueEnd Sub

Como resultado, dos cosas importantes pueden ir mal. Si la celda A2 contiene 0, se obtiene una división por 0 error. Si la celda A2 contiene un valor no numérico, se obtiene un error de coincidencia de tipos.

Para evitar un desagradable mensaje de error, puede indicar a Excel que hay un error, desea que la ejecución de código para saltar a la etiqueta llamada myExit.

En el siguiente código, la etiqueta myExit es seguido por un mensaje al usuario que le da consejos amistosos en lugar de un mensaje de error desagradable. También tenga en cuenta la línea de Exit Sub antes de la etiqueta myExit, que asegura que simplemente la salida si no se encuentra ningún error, el código:

Sub Macro1 () On Error GoTo MyExitRange ("A3") .Value = Rango ("A1").Rango de valores("A2") SubMyExit .ValueExit: MsgBox "Por favor uso válido de números distintos de cero"End Sub

On Error Resume Next

A veces, desea que Excel para ignorar un error y simplemente reanudar la ejecución del código. En estas situaciones, se puede utilizar el error en el currículum instrucción Next.

Video: #25 - Curso de Macros e Excel VBA - Tratamento de Erros (On Error)

Por ejemplo, el siguiente fragmento de código está destinado a eliminar un archivo llamado GhostFile.exe desde el directorio C: temp. Después se elimina el archivo, un buen cuadro de mensaje indica al usuario que el archivo se ha ido:

Sub Macro1 () Kill "C: TempGhostFile.exe"MsgBox "El archivo ha sido eliminado."End Sub

El código funciona muy bien si de hecho existe un archivo que desea eliminar. Pero si por alguna razón el archivo llamado GhostFile.exe no existe en la unidad C: Temp, se genera un error.

En este caso, no le importa si el archivo no existe, ya que se va a eliminar de todos modos. Así que usted puede simplemente ignorar el error y seguir adelante con el código.

Al utilizar el error en el currículum comunicado continuación, el código sigue su curso si existe o no el archivo apuntado:

Video: Macro para calcular varias funciones

Sub Macro1 () On Error Resume NextKill "C: TempGhostFile.exe"MsgBox "El archivo ha sido eliminado."End Sub

On Error Goto 0

Al utilizar ciertos estados de error, puede que sea necesario para restablecer el comportamiento de comprobación de errores de VBA. Para entender lo que esto significa, echar un vistazo al siguiente ejemplo.

Aquí, primero desea eliminar un archivo llamado GhostFile.exe desde el directorio C: temp. Para evitar errores que puedan derivarse del hecho de que el archivo de destino no existe, se utiliza el error en el currículum instrucción Next. Después de eso, se intenta hacer algunos cálculos sospechoso dividiendo 100 / Mike:

Sub Macro1 () On Error Resume NextKill "C: TempGhostFile.exe"Distancia("A3") .Value = 100 / "Micro"End Sub

La ejecución de esta pieza de código debe generar un error debido a la matemática borrosa, pero no lo hace. ¿Por qué? Debido a que la última instrucción que le dio al código era On Error Resume Next. Cualquier error encontrado después de esa línea es ignorada de manera efectiva.

Para remediar este problema, se puede utilizar el On Error GoTo 0 a reanudar el comportamiento normal de comprobación de errores:

Sub Macro1 () On Error Resume NextKill "C: TempGhostFile.exe"On Error Goto 0range ("A3") .Value = 100 / "Micro"End Sub

Este código no hará caso de errores hasta que el On Error GoTo 0. Después de esa declaración, el código se remonta a la comprobación de errores normal y provoca el error esperado derivado de la matemática borrosa.

Artículos Relacionados