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 !

Mostrar la cita
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
#2 ElProfe
23/05/2010 - 03:12 | Informe spam
Hola Héctor Miguel:

Atendí tus recomendaciones y cuando llego a esta línea...
Mostrar la cita
...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
#3 Héctor Miguel
23/05/2010 - 03:48 | Informe spam
hola, Manuel !

Mostrar la cita
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

Mostrar la cita
solo te puedo "recomendar"... SEGUIR ADELANTE !!! :D

Mostrar la cita
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) :-((
#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?
...
Mostrar la cita
R = Gracias por el consejo; ahí vamos, sin prisa, pero sin pausa.
...
Mostrar la cita
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.
...
Mostrar la cita
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
#5 Héctor Miguel
24/05/2010 - 04:02 | Informe spam
hola, Manuel !

Mostrar la cita
como te decia en el mensaje con la primera propuesta: ...
Mostrar la cita
(pero no se mostrara en los dialogos de macros)
Mostrar la cita
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.
Ads by Google
Search Busqueda sugerida