Parar Código Vba

Dudas sobre código
Dayban
Nivel 3
Mensajes: 65
Registrado: Mié Sep 20, 2017 7:08 am

Parar Código Vba

Mensajepor Dayban » Vie Mar 09, 2018 10:22 pm

Hola de nuevo a tod@s!!!

Es muy posible que esta duda se pueda resolver de mil maneras, pero si hay una forma de conseguir lo quiero sin hacer las comprobaciones antes de iniciar el primer módulo o sin hacerlas directamente en éste, me gustaría aprender cómo. Os explico mejor:
Tengo un módulo (mdlPrincipal) el cual a su vez llama a otro (mdlSecundario).
El problema que tengo es que si durante la ejecución del mdlSecundario, este topa con un dato erroneo, me muestra un msgbox con dicho dato, pero la ejecución del mdlSecundario sigue y en consecuencia también la del mdlPrincipal.
Hay algun tipo de código vba que finalice la ejecución de un módulo?
Espero haberme explicado bien :D

Gracias a tod@s!!!

emiliove
Colaborador
Reto04
Mensajes: 314
Registrado: Lun Nov 23, 2015 4:05 pm

Re: Parar Código Vba

Mensajepor emiliove » Sab Mar 10, 2018 1:55 am

Me imagino que tienes algún if para hablarle al Msgbox puedes poner un Exit Sub justo después de este para detener el código.

saludos.

Dayban
Nivel 3
Mensajes: 65
Registrado: Mié Sep 20, 2017 7:08 am

Re: Parar Código Vba

Mensajepor Dayban » Sab Mar 10, 2018 7:41 am

Si pero aun saliendo del mdlSecundario de esa forma, el mdlPrincipal sigue su ejecución.
No se puede decir con código que si ese "if" es afirmativo y me da en consecuencia un mensaje, también pare la ejecución del mdlPrincipal?

pitxiku
VIP
Reto01
Mensajes: 153
Registrado: Sab Sep 30, 2017 6:23 pm

Re: Parar Código Vba

Mensajepor pitxiku » Sab Mar 10, 2018 12:13 pm

Todo depende de cómo lo tengas estructurado, pero parece que para lo que quieres, puedes usar funciones. En el módulo "secundario":

Código: Seleccionar todo

Public Function LaFuncion() As Boolean
    ... unas instrucciones ...
    If la condición = True Then
        MsgBox "Esto va a parar el código"
        LaFuncion = True
    End If
End Function


Y en el principal:

Código: Seleccionar todo

Public Sub Principal()
    ... instrucciones ...
    If LaFuncion = False Then
        ... Esto sólo se ejecutará cuando LaFuncion devuelva False ...
    End If
End Sub


Eso, si sólo quieres parar ese método. Si lo que quieres es parar todo, hay otros caminos:

- End: https://msdn.microsoft.com/es-es/VBA/La ... -statement
- Stop: https://msdn.microsoft.com/es-es/VBA/La ... -statement

Pero para eso, casi mejor usar un Application.Quit y cerrar la base de datos.

Dayban
Nivel 3
Mensajes: 65
Registrado: Mié Sep 20, 2017 7:08 am

Re: Parar Código Vba

Mensajepor Dayban » Sab Mar 10, 2018 2:57 pm

La idea seria conseguir realizar lo mismo que el "end" al mismo tiempo en los dos módulos, si el if del mdlSecundario es afirmativo.
Tienes razón que seguramente si uso funciones en lugar de los "Sub", ya pueda hacerlo. Pero tenía curiosidad por saber si hay algun sistema que me permita lo mismo sin tener que modificar lo programado hasta ahora.
Si se te ocurre, será de gran ayuda sino me toca modificar más cosas xD
Gracias por todo!!!

Avatar de Usuario
Sveinbjorn
Moderador
Mensajes: 936
Registrado: Sab Oct 24, 2015 10:12 pm

Re: Parar Código Vba

Mensajepor Sveinbjorn » Sab Mar 10, 2018 3:55 pm

Si no quieres usar funciones, puedes usar una variable pública. El funcionamiento sería prácticamente el mismo: le das un valor a la variable al ocurrir el error, y en el otro código validas si debe seguir la ejecución o no.
Sveinbjorn El Rojo

Dayban
Nivel 3
Mensajes: 65
Registrado: Mié Sep 20, 2017 7:08 am

Re: Parar Código Vba

Mensajepor Dayban » Sab Mar 10, 2018 5:15 pm

En esa posibilidad no habia caido...
Lo voy a probar y a ver si me funciona ya que siempre me dan problemas las variables publicas :evil:
Si a alguien se le ocurre algo mas genial
Muchas gracias a todos por la ayuda!!!


Volver a “Código VBA”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado