VBA en caso de error, reanudar siguiente o ir a 0

Este tutorial explicará VBA On Error Resume Next y Goto Statement.

Incluso cuando su código esté perfectamente construido, es posible que el usuario no haga lo que espera. Por esta razón, debe insertar controladores de errores en su código siempre que haya una razón por la que pueda ocurrir un error.

En caso de error, reanudar siguiente

La declaración On Error Resume Next le dice a VBA que omita cualquier línea de código que contenga errores y continúe con la siguiente línea. VBA ignorará la línea o líneas con un error y pasará a la siguiente línea de código.

Esto es útil cuando la línea de código que se puede ignorar no es crítica para la ejecución exitosa de la macro, pero puede ser bastante peligrosa si se usa incorrectamente, ya que puede dar resultados no intencionales.

Por ejemplo, en el procedimiento siguiente:

123456 Sub HideAllSheets ()Dim ws como hoja de trabajoPara cada ws en ActiveWorkbook.Sheetsws.Visible = FalsoSiguiente wsEnd Sub

Si ejecutamos este código, obtendremos un error ya que no podemos ocultar todas las hojas de trabajo en un libro de trabajo; al menos un libro de trabajo debe permanecer visible.

Sin embargo, si modificamos el procedimiento como se muestra a continuación, el código continuará más allá del error y dejará visible la última hoja del libro de trabajo.

1234567 Sub HideAllSheets ()En caso de error, reanudar siguienteDim ws como hoja de trabajoPara cada ws en ActiveWorkbook.Sheetsws.Visible = FalsoSiguiente wsEnd Sub

En caso de error, vaya a 0

Si no tenemos un controlador de errores en nuestro código, En caso de error Goto 0 es la configuración predeterminada de Excel. Esto básicamente significa que cuando ocurre un error con En caso de error, vaya a 0, VBA dejará de ejecutar código y mostrará su cuadro de mensaje de error estándar, por ejemplo:

Si hemos puesto una trampa de error como En caso de error, reanudar siguiente en nuestro código, pero luego deseamos restablecer el error al valor predeterminado, podemos insertar un En caso de error Goto 0 línea en nuestro código.

12345678910 Sub ErrorGoTo0 ()En caso de error, reanudar siguienteDim ws como hoja de trabajoPara cada ws en ActiveWorkbook.Sheetsws.Visible = FalsoSiguiente wsEn caso de error, vaya a 0'Ejecute más código aquí, por ejemplo:ActiveSheet.Name = "Hoja1"End Sub

Ahora bien, si hubiera algún error en nuestro código después de la En caso de error Goto 0 línea, se produciría el mensaje de error predeterminado para Excel. En este ejemplo, ya tenemos una hoja llamada Sheet1 en ActiveWorkbook como el código sobre el En caso de error Goto 0 oculta la hoja, pero no la elimina. A continuación, aparecerá el mensaje de error predeterminado de Excel que indica que el nombre de la hoja ya se ha tomado.

En caso de error, ir a Línea

También podemos forzar que nuestro código se mueva a una línea diferente de código usando el En caso de error Goto Línea que le dice a VBA que vaya a una línea específica de código si ocurre un error.

123456789101112 Sub ErrorGoToLine ()En caso de error, reanudar siguienteDim ws como hoja de trabajoPara cada ws en ActiveWorkbook.Sheetsws.Visible = FalsoSiguiente wsEn caso de error, ir a errhandlerActiveSheet.Name = "Hoja1"Salir de Suberrhandler:MsgBox ("¡Ya existe una hoja llamada sheet1!", VbCritical)End Sub

En el ejemplo anterior, cuando el código encuentra la hoja "Hoja1", se mueve a la línea de código debajo de la etiqueta del controlador de errores; en este caso, llama a un cuadro de mensaje personalizado que informa a los usuarios que la hoja ya existe. La etiqueta del controlador de errores debe tener dos puntos después para mostrar a VBA que es una etiqueta.

1 errhandler:

El código luego saltará a la línea debajo de la etiqueta y devolverá el cuadro de mensaje personalizado.

Esto es útil cuando no desea que su usuario pueda hacer clic en Depurar para ingresar a su código, ya que el mensaje estándar de Excel siempre ofrece una opción para Depurar el código.

También necesitamos un Salir de Sub en el procedimiento. Si hay NO una hoja llamada Hoja1, entonces esa línea de código se ejecutaría y cambiaría el nombre de la hoja activa a Hoja1. Luego queremos que el código termine, no queremos que continúe con el controlador de errores y muestre el cuadro de mensaje. La línea Exit Sub luego sale del procedimiento y detiene el código.

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave