salir de una macro con otra macro

15/10/2006 - 01:32 por Ivan | Informe spam
hola a todos de nuevo (viendo el hilo ¿anterior? <..dos macros a la
vez..> parece que esta consulta viene que ni hecha a posta)

no se como hacer para detener la ejecucion de una 'presentacion' que
consiste en una serie de imagenes y un cuadro de texto que se van
incrustando en una hoja (el codigo de dicha presentacion incluye
bastante manejo/'retardo' de tiempos y posiciones/tamaños de las
imagenes/formas) a pantalla 'totalmente' completa, o sea, sin ninguna
barra de ningun tipo..

seria el tipico boton -> "Saltar presentacion" o similar...

he incrustado un 'Button' en la hoja (que tambien se eliminaria al
cancelar la presentacion), pero no se como hacer para que detenga la
ejecucion del codigo y continue en el punto siguiente a la
presentacion.. Hasta ahora solo he conseguido errores (algunos
'bastante' serios)

si podeis echarme una mano os lo agradezco

un saludo y hasta pronto
Ivan

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
15/10/2006 - 04:51 | Informe spam
hola, Ivan !

... como hacer para detener la ejecucion de una 'presentacion' que consiste en una serie de imagenes y [...]
... seria el tipico boton -> "Saltar presentacion" o similar...
he incrustado un 'Button' en la hoja (que tambien se eliminaria al cancelar la presentacion)
pero no se como hacer para que detenga la ejecucion del codigo y continue en el punto siguiente a la presentacion...



1) [hasta donde se]... mientras un codigo esta en ejecucion... no hay forma de lanzar 'otro' de manera 'simultanea' -?-
[incluso] si alguna instrucion 'deriva' hacia otro procedimiento, se ejecuta el 'nuevo' procedimiento [y asi sucesivamente]...
y la macro 'comando' continua en la linea siguiente [hasta despues de que le regresan 'el control de las acciones'] :))

2) [creo que] lo que podrias hacer es 'adaptar' un procedimiento que controle un intento de interrupcion por parte del usuario ;)
te paso un ejemplo al final, podrias incluirlo 'previo' al inicio del codigo de la presentacion, el el evento '_open', o... ???]
[usando la misma API del retardo] :D

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

Private Declare Sub Retardo Lib "kernel32" Alias "Sleep" (ByVal Milisegundos As Long)
Sub Probando_terminaciones()
If MsgBox("Deseas saltar la presentacion ?", _
vbYesNo + vbQuestion + vbDefaultButton2, _
"Presentando...") = vbYes Then Exit Sub
MsgBox "Para terminar la presentacion en cualquier momento:" & vbCr & _
"Pulsa {Esc} o... -> {Ctrl} + {Break}", vbInformation, "Estas ""avisado""..."
Application.EnableCancelKey = xlErrorHandler
On Error GoTo Ver_Error
Dim Sig As Byte
For Sig = 1 To 50
Retardo 250
Next
Exit Sub
Ver_Error:
If Err = 18 Then _
If MsgBox("Deseas terminar con la presentacion ?", _
vbYesNo + vbQuestion, "Confirma por favor...") = vbNo Then Resume
End Sub
Respuesta Responder a este mensaje
#2 Ivan
15/10/2006 - 20:53 | Informe spam
hola Hector Miguel, lo primero gracias una vez mas

he estado haciendo pruebas con el codigo y parece ir de maravilla. Para
las pruebas he 'insertado' el procedimiento de la presentacion
(incluyendo una variable boolean por si no se cancela, que al acabar
salga del proc. contenedor) dentro del tuyo. Supongo que podre
adaptarlo de otras maneras.

de todas formas te comento la solucion que habia encontrado por ver si
pudiera ser valida y no dar problemas.

habia declarado una variable boolean en el modulo y el boton solamente
la pone a True. Luego en el proc. de la presentacion, que tiene varios
bucles for.. condiciono la salida en numerosos puntos si la variable es
'True'. Parece funcionar bien excepto si 'experimento' con DoEvents,
pero este es otro cantar que te comentare luego en el otro hilo.

en cuanto a este tema(¿o quizas al otro?), me ha surgido otro (de
momento) problema. Parece que el que se este ejecutando el
procedimiento no impide escribir(pej) en una celda(aunque en el
definitivo, todo estara protegido contra escritura), lo que provoca
conflictos. supongo que no debe ser dificil impedirlo, pero de momento
no he tenido tiempo de mirarlo.

Disculpa lo poco explicito, pero ahora tengo que salir. En cuanto lo
tenga un poco mas claro te comento

Un saludo y hasta pronto
Ivan
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida