Bienvenido a la mayor comunidad de usuarios EXCEL

Regístrate ahora y podrás: / 💪 Hacer preguntas a los expertos / ⬇️ Descargar ejemplos y plantillas / 🏅 Acceder a contenidos premium

Regístrate gratis

Eliminar proceso tiempo de espera

Dandy

Member
Buenas tardes

Al realizar la proceso de la Macro1 la cual esta líneas abajo procesa Call separacion y Call tiempoespera.
Sub Ejecutar ()
Application.ScreenUpdating = False
Call separacion
Call tiempoespera
End Sub

Es aquí donde tengo la siguiente consulta, si ya ejecute el proceso y va corriendo el tiempo quiero procesar nuevamente la macro3 como hago para que después de haber pasado el tiempo no me ejecute el proceso "tiempoespera"(este proceso limpia o reinicia todo como al inicio).

Dim tiempo As Variant
Dim ejecutando As Boolean
__________________________________________________________________________________
tiempo = Now + TimeValue("00:00:20")
'MsgBox "Has esperado 5 segundos"
Application.OnTime tiempo, "macro2", , True
End Sub

Un ejemplo seria que ejecuto la macro1(call separacion y call tiempoespera) que durante 20 minutos me va a ejecutar la macro2, pero a lo 10 minutos ejecuto la macro3, cuando llega los 20 minutos todo el proceso que realizo la macro3 se elimina, es aquí que quiero una macro o lenguaje que si un proceso de tiempoespera están aun no culminada lo bloquee y/o lo ponga por terminado sin llegar a realizar la limpieza de información.

Espero haberme explicado y pido su apoyo.

Saludos.
 

novirus

Active member
Buenas tardes

Al realizar la proceso de la Macro1 la cual esta líneas abajo procesa Call separacion y Call tiempoespera.
Sub Ejecutar ()
Application.ScreenUpdating = False
Call separacion
Call tiempoespera
End Sub

Es aquí donde tengo la siguiente consulta, si ya ejecute el proceso y va corriendo el tiempo quiero procesar nuevamente la macro3 como hago para que después de haber pasado el tiempo no me ejecute el proceso "tiempoespera"(este proceso limpia o reinicia todo como al inicio).

Dim tiempo As Variant
Dim ejecutando As Boolean
__________________________________________________________________________________
tiempo = Now + TimeValue("00:00:20")
'MsgBox "Has esperado 5 segundos"
Application.OnTime tiempo, "macro2", , True
End Sub

Un ejemplo seria que ejecuto la macro1(call separacion y call tiempoespera) que durante 20 minutos me va a ejecutar la macro2, pero a lo 10 minutos ejecuto la macro3, cuando llega los 20 minutos todo el proceso que realizo la macro3 se elimina, es aquí que quiero una macro o lenguaje que si un proceso de tiempoespera están aun no culminada lo bloquee y/o lo ponga por terminado sin llegar a realizar la limpieza de información.

Espero haberme explicado y pido su apoyo.

Saludos.
Buenas,

Pon una variable Publica en el código, por ejemplo:
Código:
Public Procesando As Boolean

Esta variable consúltala antes de continuar con el siguiente proceso.

Proceso 1; Procesando = True
Proceso 2; Si Procesando = True entonces no hagas nada.

No se algo así.

Y si lo quieres mas detallado pon
Código:
Public Procesando As Integer


Proceso 1; Inicio Procesando = 0
...
Proceso 1; Fin Procesando = 1

Proceso 2; Si Procesando > 0 True
... Procesando = 2
....Codigo Proceso 2
Proceso 2: Fin Procesando = 3

Y asi sucesivamente.
No se si es esta la idea que buscas.

Un saludo.
 

Dandy

Member
Buenas,

Pon una variable Publica en el código, por ejemplo:
Código:
Public Procesando As Boolean

Esta variable consúltala antes de continuar con el siguiente proceso.

Proceso 1; Procesando = True
Proceso 2; Si Procesando = True entonces no hagas nada.

No se algo así.

Y si lo quieres mas detallado pon
Código:
Public Procesando As Integer


Proceso 1; Inicio Procesando = 0
...
Proceso 1; Fin Procesando = 1

Proceso 2; Si Procesando > 0 True
... Procesando = 2
....Codigo Proceso 2
Proceso 2: Fin Procesando = 3

Y asi sucesivamente.
No se si es esta la idea que buscas.

Un saludo.
Buenas tardes:

Perdón pero no entendí.

Saludos.
 

Héctor Miguel

Well-known member
si ya ejecute el proceso y va corriendo el tiempo quiero procesar nuevamente la macro3 como hago para que después de haber pasado el tiempo no me ejecute el proceso "tiempoespera"
toma en cuenta lo siguiente:

1) si encadenas procedimientos, "el siguiente" se espera a que termine "el anterior"

2) si programas eventos "on.time", estos se ejecutan de manera asincrona, PERO...
- si la aplicacion esta "ocupada" (por ediciones del usuario o acciones de otro procedimiento) puede ocurrir que...
- o interrumpen las acciones del usuario (poco probable las acciones de otro procedimiento)
- o el "on.time" pendiente se re-programa o se termina (no se ejecuta) segun como se programe

por lo demas, solo expusiste "una parte" de la situacion que necesitas resolver (?)
 

Dandy

Member
toma en cuenta lo siguiente:

1) si encadenas procedimientos, "el siguiente" se espera a que termine "el anterior"

2) si programas eventos "on.time", estos se ejecutan de manera asincrona, PERO...
- si la aplicacion esta "ocupada" (por ediciones del usuario o acciones de otro procedimiento) puede ocurrir que...
- o interrumpen las acciones del usuario (poco probable las acciones de otro procedimiento)
- o el "on.time" pendiente se re-programa o se termina (no se ejecuta) segun como se programe

por lo demas, solo expusiste "una parte" de la situacion que necesitas resolver (?)
Buenas tardes Héctor:

Agradeciendo de antemano tu tiempo, recién estoy entrando en este mundo del VBA, y a veces encontramos situación de un nivel un poco avanzado.

Sobre lo que estoy buscando es lo siguiente:
1.- Cuando ejecuto la macro1(esta incluye el on.time) cuando pasa el tiempo indicado me procesa la macro2,este lazo de tiempo demora 20 minutos.
2.- Pero durante este tiempo de espera para ejecutar la macro2, deseo procesar la macro3 que es otro tipo de proceso, es en esta situacion donde quiero decirle a la macro3 si existe el proceso on.time que aun no termine que lo bloque y/o elimine ese proceso para realizar el proceso de la macro3.

Dentro de tu consulta seria culminar el proceso pendiente si realizar ningun cambio y ejecutar el nuevo proceso que seria la macro3.

Espero haber sido claro en lo que busco.

Muchas gracias.
 

Héctor Miguel

Well-known member
recién estoy entrando en este mundo del VBA, y a veces encontramos situación de un nivel un poco avanzado
ok, comienza por NO usar terminos ambiguos que lleven a confusiones (?)

que son y que hacen (exactamente):
- macro1 ???
- macro2 ???
- macro3 ???

macro1 es "sub ejecutar()" ???

en cual(es) programas eventos "on.time" ???

si macro1 y macro2 se toman 20 minutos... como haces para "lanzar" macro3 en el inter ???
seria culminar el proceso pendiente si realizar ningun cambio y ejecutar el nuevo proceso que seria la macro3
este caso se resuelve cancelando el procedimiento "on.time" programado y pendiente de ejecucion
(y lo re-lanzas al terminar la macro3 ?)
 

Dandy

Member
ok, comienza por NO usar terminos ambiguos que lleven a confusiones (?)

que son y que hacen (exactamente):
- macro1 ???
- macro2 ???
- macro3 ???

macro1 es "sub ejecutar()" ???

en cual(es) programas eventos "on.time" ???

si macro1 y macro2 se toman 20 minutos... como haces para "lanzar" macro3 en el inter ???

este caso se resuelve cancelando el procedimiento "on.time" programado y pendiente de ejecucion
(y lo re-lanzas al terminar la macro3 ?)
Hola Hector:

La macro1 esta compuesto por el siguiente:
Sub Ejecutar ()
Application.ScreenUpdating = False
Call separacion (separa los nombre)
Call tiempoespera (en aquí que se espera 20 minutos para ejecutar la macro2 que reinciar todo el proceso realizado de separación de nombre)
End Sub

Macro3, selecciona dirección, notas y otras de la base de datos.

Como en algunos casos para ejecutar la macro3 se revisa otra información adicional esta demora en ejecutarse, pero hay casos que esta información se tienen en el mismo momento que toda la información.

Es por ese motivo que se da 20 minutos para revisar q la información se copio que se realizo en el primer proceso pase a otra data y se reinicia todo de nuevo para ejecutar otra información solicitado.

Saludos.
 

Temas similares

Arriba