VBA Salir de Procedimiento o Función

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 2, 2022

En VBA, se puede salir de un Procedimiento o de una Función, utilizando los comandos Exit Sub o Exit Function para salir de la función.

Exit Sub
Exit Function

Cuando la ejecución del código llega a Exit Sub o Exit Function, saldrá de un Procedimiento o Función y continuará con cualquier otra ejecución de código. Si quieres aprender cómo salir de un Procedimiento por un Error, haz clic en este enlace: VBA On Error Exit Sub Si quieres aprender cómo terminar una ejecución de código completa, haz clic en este enlace: VBA End

Salir de un Procedimiento en VBA

Verás en el ejemplo lo que sucede cuando usamos el comando Exit Sub en un Procedimiento. Creamos un Procedimiento ExitSub, que tiene dentro el comando Exit Sub. El Procedimiento CallExitSub llama a este Procedimiento. Aquí está el código:

Private Sub ExitSub()

    Dim i As Integer

    For i = 1 to 10  
        If i = 5 Then
            Exit Sub
            MsgBox "El valor de i es" & i
        End If
    Next i 

End Sub


Private Sub CallExitSub()
    Call ExitSub
    MsgBox "Salir de Sub"  
End Sub

En el ExitSub, primero entramos en el bucle For si el valor de i es menor que 10:

For i = 1 To 10

Next i

Después comprobamos si el valor de i es igual a 5, utilizando el comando If. Si el valor es 5, queremos salir del Prodcedimeinto y devolver el cuadro de mensaje con el valor de i:

If i = 5 Then
     Exit Sub
     MsgBox "El valor de i es" & i
End If

Si la condición no se cumple, la siguiente sentencia incrementa i en 1 y entra en el bucle For de nuevo:

Next i

En el CallExitSub, primero llamamos al Procedimiento ExitSub:

Call ExitSub

Después devolvemos la caja de mensajes:

MsgBox "Salir del Sub"

Si ejecutas el CallExitSub, primero llamará al ExitSub. Si ejecutas este código en el modo de depuración, verás que pasará por el bucle 5 veces. En la iteración, el valor de la variable i se convierte en 5 y el código entra en el cuerpo If. Ahora se sale del Procedimiento ExitSub y se devuelve al CallExitSub. La siguiente línea es MsgBox «Exit Sub»:

Salir Del Sub

Como puede ver, el ExitSub se sale justo después del comando Exit Sub , por lo que 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 Procedimiento, sólo que el comando es Exit Function. En el ejemplo, creamos el ExitFunc que devuelve un entero. El Procedimiento CLlamarSalirDeLaFuncion llama a esta función. Aquí está el código:

Private Function ExitFunc() As Integer

    Dim i As Integer

    For i = 1 to 10
        If i = 5 Then
            ExitFunc = i
            End function
        End If
    Next i

End Function


Private Sub LlamarSalirDeLaFuncion()
    Dim intFunc As Integer
    intFunc = ExitFunc()
    MsgBox "El valor de intFunc es " & intFunc
End Sub

En el ExitFunc, primero entramos en el bucle For si el valor de i es menor que 10:

For i = 1 To 10

Next i

Después comprobamos si el valor de i es igual a 5, utilizando el comando If. Si el valor es 5, asignamos el valor de i al resultado de la función y salimos de ella:

If i = 5 Then
    ExitFunc = i
    End Function
End If

Si la condición no se cumple, la siguiente sentencia incrementa i en 1 y entra de nuevo en el bucle For:

Next i

En la función CallExitFunction, primero llamamos a la función ExitFunc: Para ello tenemos que declarar la variable intFunc de tipo entero y asignarle el resultado de la función ExitFunc:

Dim intFunc As Integer

intFunc = ExitFunc()

Después devolvemos el cuadro de mensajes con el valor de intFunc:

MsgBox "El valor de intFunc es " & intFunc

Si ejecutas el CallExitFunction, primero llamará a la función ExitFunc. Si ejecutas este código en el modo de depuración, verás que pasará por el bucle 5 veces. En la iteración, el valor de la variable i se convierte en 5 y el código entra en el cuerpo del If. Ahora el valor de la ExitFunc se convierte en i y la función se sale y vuelve a la CallExitFunction. La siguiente línea es MsgBox «El valor de intFunc es » & intFunc:

Exit Function

VBA Coding Made Easy

Stop searching for VBA code online. Learn more about AutoMacro - A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users! vba save as


Learn More!
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples