Llamar un procedimiento desde otro procedimiento

22/05/2010 - 17:21 por ElProfe | Informe spam
Saludos amigos del foro:

Otra de mis historias por si alguien desea darme una mano.

Tengo dos procedimientos, uno que "IniciaPeriodo" y otro que hace
"BackUp".
-El que hace "BackUp" debe funcionar independiente desde un botón
-El que "IniciaPeriodo" debe funcionar desde su propio botón,pero
pasando primero por "BackUp" y luego terminando de hacer lo suyo.
-Los dos cuentan con sendos avisos informativos para el usuario.
Lo que pretendo es que cuando el usuario haga clic en "BackUp" se
muestren los avisos informativos de este procedimiento.
Pero cuando el usuario elija el botón "IniciaPeriodo" solo se deben
mostrar los avisos informativos de este procedimiento y no así los del
procedimiento "BackUp" que termina siendo llamado en una de sus lineas
por "IniciaPeriodo"

Tengo algo como esto, con la salvedad que se muestran todos los avisos
informativos habidos y por haber.

Public Sub Inicio():
Avisa que iniciará datos
PaQueSepaBackUp = 123
Llama a Backup
Si no hay datos informa
Si hay datos los borra e incia datos
End Sub

Public Sub BackUp():
If PaQueSepaBackUp = 123 then goto Salto1
No mostrar mensaje si llamado viene de Inicio
Avisa que hará un backup
Si no hay datos informa que no puede hacerlo
Salto1:
End If
Si hay datos hace el backup
If PaQueSepaBackUp = 123 then goto Salto2
No mostrar mensaje si llamado viene de Inicio
Avisa que hizo backup
Salto2:
End If
End Sub

Por favor, una alma caritativa que me saque de la ignorancia y me diga
porque no me está funcionando (bueno, si es que debería funcionar, que
supongo que si!)

Gracias anticipadas,

Cordial saludo,

ElProfe

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
22/05/2010 - 19:54 | Informe spam
hola, Manuel !

Tengo dos procedimientos, uno que "IniciaPeriodo" y otro que hace "BackUp".
- El que hace "BackUp" debe funcionar independiente desde un boton
- El que "IniciaPeriodo" debe funcionar desde su propio boton, pero pasando primero por "BackUp" y luego terminando de hacer lo suyo.
- Los dos cuentan con sendos avisos informativos para el usuario.
Lo que pretendo es que cuando el usuario haga clic en "BackUp" se muestren los avisos informativos de este procedimiento.
Pero cuando el usuario elija el botón "IniciaPeriodo" solo se deben mostrar los avisos informativos de este procedimiento
y no asi los del procedimiento "BackUp" que termina siendo llamado en una de sus lineas por "IniciaPeriodo"
Tengo algo como esto, con la salvedad que se muestran todos los avisos informativos habidos y por haber.



1) todos los procedimientos son "Public" (por omision) y no necesitas establecerlo (a menos que los necesites "Private")
2) puedes "pedir" argumentos (opcionales) y el procedimiento seguira disponible (pero no se mostrara en los dialogos de macros)
3) puedes ejecutar/asignar/... este tipo de procedimientos escribiendo su nombre en la referencia correspondiente (ejecutar/asignar/...)
4) siguiendo con el mismo "cripticismo" de tu muestra, prueba con algo +/- como lo siguiente:

Sub BackUp(Optional NoAvisar As Boolean = False)
' si no hay datos, informa que no se hara nada (y termina el procedimiento) <= esta parte, TE TOCA !!!!
If NoAvisar Then Goto Avisado
' aqui se muestra el aviso de inicio <= esta parte, TE TOCA !!!!
Avisado:
' aqui se realizan las acciones ... <= esta parte, TE TOCA !!!!
If NoAvisar Then Exit Sub
' aqui se muestra el aviso de terminado <= esta parte, TE TOCA !!!!
End Sub

Sub Inicio()
' si no hay datos, informa que no se hara nada (y termina el procedimiento) <= esta parte, TE TOCA !!!!
' aqui se muestra el aviso de iniciar <= esta parte, TE TOCA !!!!
' luego se llama al "Backp" evitando los avisos:
BackUp True
' luego se borran los datos para reinicializar para otra ejecucion del procedimiento <= esta parte, TE TOCA !!!!
End Sub

si cualquier duda (o informacion adiconal mas... "concreta")... comentas ?
saludos,
hector.

__ el (pseudo)codigo expuesto __
Public Sub Inicio():
Avisa que iniciara datos
PaQueSepaBackUp = 123
Llama a Backup
Si no hay datos informa
Si hay datos los borra e incia datos
End Sub

Public Sub BackUp():
If PaQueSepaBackUp = 123 then goto Salto1
No mostrar mensaje si llamado viene de Inicio
Avisa que hará un backup
Si no hay datos informa que no puede hacerlo
Salto1:
End If
Si hay datos hace el backup
If PaQueSepaBackUp = 123 then goto Salto2
No mostrar mensaje si llamado viene de Inicio
Avisa que hizo backup
Salto2:
End If
End Sub
Respuesta Responder a este mensaje
#2 ElProfe
23/05/2010 - 03:12 | Informe spam
Hola Héctor Miguel:

Atendí tus recomendaciones y cuando llego a esta línea...
If NoAvisar Then Goto Avisado


...queda en rojo y no la reconoce. No se cual sea la causa.

Por favor una ayuda al respecto.

Lo de mi "cripticismo" es mas por hacer el ejercicio de la lógica (que
a veces me falla) y así tratar de parender algo mas de VBA (ya voy a
completar 18 años y nada que salgo de los temas básicos je je e)

Héctor, encontré un artículo tuyo de unas 10 paginas titulado...
"¿Como puedo proteger un trabajo intelectual desarrolado en Excel?"
...y creo que en ese documento ha estado resuelto (desde hace un buen
rato) el tema de seguridad que consulté en otra entrada semanas atras.

De nuevo, gracias por tu interés y por tu ayuda.

Saludos,

ElProfe
Respuesta Responder a este mensaje
#3 Héctor Miguel
23/05/2010 - 03:48 | Informe spam
hola, Manuel !

Atendi tus recomendaciones y cuando llego a esta linea...
If NoAvisar Then Goto Avisado
...queda en rojo y no la reconoce. No se cual sea la causa.

Por favor una ayuda al respecto.



he probado con estas adaptaciones (cuadros de mensaje) y no sale ningun error (???)

Sub BackUp(Optional NoAvisar As Boolean = False)
MsgBox "rutina de comprobacion de datos (backup) ..."
If NoAvisar Then GoTo Avisado
MsgBox "iniciado proceso de backup ..."
Avisado:
MsgBox "realizando las acciones de backup ..."
If NoAvisar Then Exit Sub
MsgBox "proceso de backup terminado con exito !"
End Sub

Sub Inicio()
MsgBox "rutina de comprobacion de datos (inicio) ..."
MsgBox "se iniciara el proceso de ""inicio"" ..."
' luego se llama al "Backp" evitando los avisos 2 y 4:
BackUp True
MsgBox "eliminando datos y preparando para otra ejecucion ..."
End Sub

Lo de mi "cripticismo" es mas por hacer el ejercicio de la logica (que a veces me falla)
y asi tratar de parender algo mas de VBA
(ya voy a completar 18 a#os y nada que salgo de los temas basicos je je e)



solo te puedo "recomendar"... SEGUIR ADELANTE !!! :D

encontre un articulo... de unas 10 paginas titulado...
"¿Como puedo proteger un trabajo intelectual desarrolado en Excel?"
...y creo que en ese documento ha estado resuelto (desde hace un buen rato)
el tema de seguridad que consulte en otra entrada semanas atras.



toma en cuenta que el articulo fue escrito con/para la version 2000
(a partir de la version 2007 podras encontrar uno que otro "sin sabores") -?-

saludos,
hector.

p.d. donde encontraste ese articulo ? (tengo entendido que la pagina ya no existe) :-((
Respuesta Responder a este mensaje
#4 ElProfe
23/05/2010 - 05:43 | Informe spam
Hola Héctor Miguel:

Creé un botón para [Inicio] y los dos códigos corren bien desde desde
allí.

Solo me restan estas inquietudes.

¿Porque el código BackUp no me deja crearle su propio botón?
¿Como debo hacer para ejecutar únicamente el código BackUp?
...
solo te puedo "recomendar"... SEGUIR ADELANTE !!!  :D



R = Gracias por el consejo; ahí vamos, sin prisa, pero sin pausa.
...
toma en cuenta que el articulo fue escrito con/para la version 2000 (a partir de la version 2007 podras encontrar uno que otro "sin sabores") -?-



R = Afortunadamente aun mantengo trabajando en la version 2003. Con
las nuevas versiones 2007 y 2010, apenas me estoy familiarizando, pero
aun no trabajo con ninguna de ellas.
...
p.d. donde encontraste ese articulo ? (tengo entendido que la pagina ya no existe)  :-((



R = Cuento con una extensa recopilación de artículos tuyos, de
Mauricio (Valedor), de KL, JLD, Javier de Marco, Adolfo Aparicio y
unos cuantos expertos mas, pero todo está en un computador algo
antiguo, que no había podido volver a accesar desde hace unos tres
años atrás, pero en estos día pude volverlo a hacer y allí está el
material que te comento. Efectivamente la página de donde lo obtuve ya
no existe.

Gracias por tu atención.

Saludos,
ElProfe
Respuesta Responder a este mensaje
#5 Héctor Miguel
24/05/2010 - 04:02 | Informe spam
hola, Manuel !

Cree un boton para [Inicio] y los dos codigos corren bien desde desde alli.
Solo me restan estas inquietudes.
Porque el codigo BackUp no me deja crearle su propio boton?
Como debo hacer para ejecutar unicamente el codigo BackUp?



como te decia en el mensaje con la primera propuesta: ...
2) puedes "pedir" argumentos (opcionales) y el procedimiento seguira disponible


(pero no se mostrara en los dialogos de macros)
3) puedes ejecutar/asignar/... este tipo de procedimientos


escribiendo su nombre en la referencia correspondiente (ejecutar/asignar/...)

o sea, al mostrar el dialogo (ejecutar macro / asignar macro)
solo necesitas "escribir" el nombre de la macro: => backup

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida