En VBA, puede salir de un Sub o Función, usando el Salir de Sub o Función de salida comandos.
1 | Salir de Sub |
1 | Función de salida |
Cuando la ejecución del código llega a Salir de Sub o Función de salida, saldrá de una Sub o Función y continuará con cualquier otra ejecución de código.
Si desea aprender cómo salir de un Sub en caso de error, haga clic en este enlace: VBA On Error Exit Sub
Si desea aprender cómo finalizar la ejecución de un código completo, haga clic en este enlace: VBA End
Salir de un Sub en VBA
Verá en el ejemplo lo que sucede cuando usamos el Salir de Sub comando en un Sub. Creamos un Sub ExitSub, que tiene el Salir de Sub comando adentro. El SubLlamarSalidaSub llama a este Sub. Aquí está el código:
123456789101112131415161718 | Sub privado ExitSub ()Dim i como enteroPara i = 1 a 10Si i = 5 EntoncesSalir de SubMsgBox "El valor de i es" & iTerminara siSiguiente yoEnd SubLlamada secundaria privadaSalirSub ()Llamar ExitSubMsgBox "Salir del sub"End Sub |
En el ExitSub, primero ingresamos el bucle For si el valor de i es menor que 10:
123 | Para i = 1 a 10Siguiente yo |
Después de eso, verificamos si el valor de i es igual a 5, usando el comando If. Si el valor es 5, queremos salir del Sub y devolver el cuadro de Mensaje con el valor de i:
1234 | Si i = 5 EntoncesSalir de SubMsgBox "El valor de i es" & iTerminara si |
Si no se cumple la condición, la siguiente declaración aumenta i en 1 y vuelve a entrar en el ciclo For:
1 | Siguiente yo |
En el LlamarSalidaSub, primero llamamos al Sub ExitSub:
1 | Llamar ExitSub |
Después de eso, regresamos el cuadro de Mensaje:
1 | MsgBox "Salir del sub" |
Si ejecuta el LlamarSalidaSub, primero llamará al ExitSub. Si ejecuta este código en el modo de depuración, verá que pasará por el bucle 5 veces. En el 5th iteración, el valor de la variable i se convierte en 5 y el código entra en el cuerpo If. Ahora el Sub ExitSub se sale y se devuelve al LlamarSalidaSub. La siguiente línea es MsgBox "Salir de sub":
Como puede ver, el ExitSub se sale justo después Salir de Sub comando, entonces el MsgBox "El valor de i es" & i nunca se ejecutará.
Salir de una función en VBA
Salir de una función en VBA es similar a salir de un Sub, solo el comando es Función de salida. En el ejemplo, creamos el ExitFunc que devuelve un número entero. El Sub Función de salida de llamada llama a esta función. Aquí está el código:
1234567891011121314151617181920 | Función privada ExitFunc () como enteroDim i como enteroPara i = 1 a 10Si i = 5 EntoncesExitFunc = iFunción de salidaTerminara siSiguiente yoFunción finalFunción de salida de llamada secundaria privada ()Dim intFunc como enterointFunc = ExitFunction ()MsgBox "El valor de intFunc es" & intFuncEnd Sub |
En el ExitFunc, primero ingresamos el bucle For si el valor de i es menor que 10:
123 | Para i = 1 a 10Siguiente yo |
Después de eso, verificamos si el valor de i es igual a 5, usando el comando If. Si el valor es 5, asignamos el valor de i al resultado de la función y salimos de la función:
1234 | Si i = 5 EntoncesExitFunc = iFunción de salidaTerminara si |
Si no se cumple la condición, la siguiente declaración aumenta i en 1 y vuelve a entrar en el ciclo For:
1 | Siguiente yo |
En el Función de salida de llamada, primero llamamos a la función ExitFunc: Para hacer eso tenemos que declarar la variable intFunc escriba integer y asigne el resultado de la ExitFunc función para ello:
123 | Dim intFunc como enterointFunc = ExitFunction () |
Después de eso, devolvemos el cuadro de Mensaje con el valor de intFunc:
1 | MsgBox "El valor de intFunc es" & intFunc |
Si ejecuta el Función de salida de llamada, primero llamará a la función ExitFunc. Si ejecuta este código en el modo de depuración, verá que pasará por el bucle 5 veces. En el 5th iteración, el valor de la variable i se convierte en 5 y el código entra en el cuerpo If. Ahora el valor de la ExitFunc se convierte en i y se sale de la función y se devuelve a la Función de salida de llamada. La siguiente línea es MsgBox "El valor de intFunc es" & intFunc: