Sub de salida de VBA

Subprocedimiento de salida de Excel VBA

La instrucción Exit Sub sale del subprocedimiento antes que las líneas definidas de los códigos VBA. Sin embargo, para salir del subprocedimiento necesitamos aplicar algún tipo de prueba lógica.

Construyamos esto en términos simples.

 Sub MacroName () '...' Algún código aquí '... Salir de Sub' Salir de Sub sin ejecutar más líneas de código debajo '...' Este código será ignorado '... End Sub 

Ejemplos

Puede descargar esta plantilla VBA Exit Sub Excel aquí - VBA Exit Sub Excel Template

Ejemplo 1

Para un mejor ejemplo, mire el siguiente código.

Código:

 Sub Exit_Example1 () Dim k As Long For k = 1 to 10 Cells (k, 1) .Value = k Next k End Sub 

El código anterior insertará números de serie del 1 al 10 en las celdas A1 a A10.

Ahora quiero insertar solo 5 números de serie y tan pronto como el valor de la variable "k" se convierta en 6, quiero salir del sub.

Para esto, tendré que agregar la prueba lógica en Excel como IF k = 6 Then Exit Sub .

Código:

 Sub Exit_Example1 () Dim k As Long For k = 1 To 10 If k = 6 Then Exit Sub 'Tan pronto como el valor k se convierta en 6, ignorará todos los códigos y saldrá de las celdas (k, 1) .Valor = k Siguiente k Fin Sub 

Ahora ejecute el código línea por línea. Presione la tecla F8 para iniciar el procedimiento.

A partir de ahora, el valor k es cero.

Para cambiar el valor k a 1, presione la tecla F8 una vez más.

Entonces, el valor k es 1, nuestro código sigue ejecutándose e insertará 1 en la celda A1. De esta manera, siga ejecutando el ciclo hasta que el valor de k se convierta en 6.

Ahora el valor de k es 6 y la línea de código está a punto de ejecutar nuestra prueba lógica para salir del subprocedimiento. Si presiono la tecla F8 una vez más, saldrá directamente de todo el subprocedimiento solamente.

Como podemos ver tiene resaltada la palabra “Salir Sub” . Al presionar la tecla F8 saldrá del subprocedimiento sin ir a la palabra “End Sub” .

Ejemplo n. ° 2: en caso de error, salga del subprocedimiento

También podemos salir del subprocedimiento cuando obtenemos los valores de error. Por ejemplo, considere los siguientes datos de dividir el número 1 del número 2.

A continuación se muestra el código para obtener la división de dos números.

Código:

 Sub Exit_Example2 () Dim k As Long For k = 2 to 9 Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k End Sub 

Como sabemos, no podemos dividir ningún número por cero. Entonces, si intentamos hacer eso, obtendremos el error como Error de tiempo de ejecución '11': División por cero.

Para evitar esto tan pronto como encontremos algún error, mencionaré mi macro para salir del subprocedimiento con efecto inmediato. El siguiente código es uno de esos casos.

Código:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: Exit Sub End Sub 

En el ejemplo anterior, he mencionado la declaración "On Error Goto ErrorHandler". Aquí la palabra ErrorHandler es la etiqueta que le he asignado. Si puede ver en la parte inferior del código, he mencionado la etiqueta como

ErrorHandler: Salir de Sub 

Entonces, tan pronto como el código encuentre un error, presionará el código para saltar a la etiqueta y la etiqueta tiene la declaración "Exit Sub", por lo que saldrá del subprocedimiento.

Ahora ejecutaré el código, calculará la división hasta que encuentre un error.

Como puede ver en la celda C7 ha encontrado un error como “División por cero” por lo que ha salido del subprocedimiento. Sin informar al usuario, salir del subprocedimiento es siempre algo peligroso. Para informar al usuario sobre el error podemos incluir un pequeño cuadro de mensaje.

Código:

 Sub Exit_Example2 () Dim k As Long For k = 2 To 9 On Error GoTo ErrorHandler Cells (k, 3) .Value = Cells (k, 1) .Value / Cells (k, 2) .Value Next k ErrorHandler: MsgBox " Se produjo un error y el error es: "& vbNewLine & Err.Description Exit Sub End Sub 

El código anterior mostrará el mensaje de error y luego saldrá del subprocedimiento. Mientras se ejecuta el código, si ocurre un error, mostrará el cuadro de mensaje en VBA como se muestra a continuación.

Esta es una forma más confiable de salir del procedimiento secundario.