Aviso de proceso en ejecucion

17/11/2009 - 07:13 por Jorge | Informe spam
He creado un menu que ejecuta una macro. Esta macro efectua calculos y demora
aproximadamente de 5 a 10 minutos dependiendo de la cantidad de informacion.
Quisiera que al iniciarse la ejecucion de la macro, la misma muestre
automaticamente un cartel que diga "PROCESO EN EJECUCION", y que al terminar
los calculos ese cartel desaparezca tambien automaticamente.
Si es posible, quisiera que el texto "PROCESO EN EJECUCION" parpadee
mientras esta a la vista.
La funcion MsgBox no me sirve porque requiere la intervencion del usuario
para desaparecer.
Como puedo hacerlo? Que codigo debo incluir?

Preguntas similare

Leer las respuestas

#6 Jorge
20/11/2009 - 01:08 | Informe spam
Antonio, antes que nada gracias por tu respuesta, pero hay algo que
seguramente estoy haciendo mal.
En principio, no entendí porqué primero es "Visible.False" y luego
"Visible.True" cuando imagaba que debería ser al revés. Pero al revés tampoco
funciona.
Te cuento.
Abri una planilla nueva sin nada en ella. Inserté un ActiveXControl TextBox.
No le cambié el nombre así que quedó con el nombre "TextBox1" y no le cambié
ninguna propiedad.
Luego creé una macro solamente para hacer que aparezca el TextBox1 y para
que luego desaparezca, siguiendo tu sugerencia. Pero no funciona bien.
Te pido que me indiques qué estoy haciendo mal, o que me corrijas la macro
para que cada vez que, con la hoja en blanco, al hacer correr la macro
aparezca el cartel y, luego del For..Next, desaparezca el cartel nuevamente.
Desde ya, muy agradecido

La macro es la siguiente:

Sub MACRO1()
Dim x As Long
Worksheets(1).Shapes("TextBox1").Visible = False

For x = 1 To 100000000
x = x + 1
Next

Worksheets(1).Shapes("TextBox1").Visible = True

End Sub



Jorge


"AnSanVal" escribió:


La solución podria ser muy variada, pero creo que te basta con un cuadro de texto, que puedes personalizar como
prefieras y hacerlo visible al comienzo del proceso e invisible al finalizar el mismo.



El código:

ActiveSheet.Shapes("cuadrotexto").Visible = TFalse
.. . . aqui el proceso . . .
ActiveSheet.Shapes("cuadrotexto").Visible = True


Donde "cuadrotexto" es el nombre del cuadro de texto.


Saludos: Antonio.
**************************


"Jorge" escribió en el mensaje
news:
> Hola Juan, creo que fuiste vos quien me ayudó en mi única oportunidad anterior.
> En esta segunda oportunidad, lo que necesito es solamente un cartel, no una
> barra de progreso.
> Los links que me enviaste seguramente me servirán para otras situaciones,
> pero no para ésta.
> Mi experiencia en macros es altísimamente limitada. Me podrías ayudar a
> solamente poner un cartel cuando se inicia la ejecución del proceso; y que
> éste desaparezca inmediatamente (sin necesidad de mi intervención) cuando el
> proceso de cálculos se terminó?
> Muchas gracias nuevamente.
>
> Jorge


.

Respuesta Responder a este mensaje
#7 AnSanVal
20/11/2009 - 10:57 | Informe spam
Hola Jorge.

Primero ¡te pido disculpas!. Efectivamente primero False y después True.

Segundo no me refería a un ActiveX, sino a un Cuadro de Texto normal. Por ejemplo en Excel 2007: Insertar > Texto >
Cuadro de texto. Pero funciona igualmente con un ActiveX.

Tercero incluye en tu código un DoEvents, asi:

Sub MACRO1()
Dim x As Long
Worksheets(1).Shapes("TextBox1").Visible = False
DoEvents
For x = 1 To 100000000
x = x + 1
Next x
Worksheets(1).Shapes("TextBox1").Visible = True
End Sub


Saludos: Antonio.
*************************
"Jorge" escribió en el mensaje
news:
Antonio, antes que nada gracias por tu respuesta, pero hay algo que
seguramente estoy haciendo mal.
En principio, no entendí porqué primero es "Visible.False" y luego
"Visible.True" cuando imagaba que debería ser al revés. Pero al revés tampoco
funciona.
Te cuento.
Abri una planilla nueva sin nada en ella. Inserté un ActiveXControl TextBox.
No le cambié el nombre así que quedó con el nombre "TextBox1" y no le cambié
ninguna propiedad.
Luego creé una macro solamente para hacer que aparezca el TextBox1 y para
que luego desaparezca, siguiendo tu sugerencia. Pero no funciona bien.
Te pido que me indiques qué estoy haciendo mal, o que me corrijas la macro
para que cada vez que, con la hoja en blanco, al hacer correr la macro
aparezca el cartel y, luego del For..Next, desaparezca el cartel nuevamente.
Desde ya, muy agradecido

La macro es la siguiente:

Sub MACRO1()
Dim x As Long
Worksheets(1).Shapes("TextBox1").Visible = False

For x = 1 To 100000000
x = x + 1
Next

Worksheets(1).Shapes("TextBox1").Visible = True

End Sub



Jorge


"AnSanVal" escribió:


La solución podria ser muy variada, pero creo que te basta con un cuadro de texto, que puedes personalizar como
prefieras y hacerlo visible al comienzo del proceso e invisible al finalizar el mismo.



El código:

ActiveSheet.Shapes("cuadrotexto").Visible = TFalse
.. . . aqui el proceso . . .
ActiveSheet.Shapes("cuadrotexto").Visible = True


Donde "cuadrotexto" es el nombre del cuadro de texto.


Saludos: Antonio.
**************************


"Jorge" escribió en el mensaje
news:
> Hola Juan, creo que fuiste vos quien me ayudó en mi única oportunidad anterior.
> En esta segunda oportunidad, lo que necesito es solamente un cartel, no una
> barra de progreso.
> Los links que me enviaste seguramente me servirán para otras situaciones,
> pero no para ésta.
> Mi experiencia en macros es altísimamente limitada. Me podrías ayudar a
> solamente poner un cartel cuando se inicia la ejecución del proceso; y que
> éste desaparezca inmediatamente (sin necesidad de mi intervención) cuando el
> proceso de cálculos se terminó?
> Muchas gracias nuevamente.
>
> Jorge


.

Respuesta Responder a este mensaje
#8 AnSanVal
20/11/2009 - 11:07 | Informe spam
No doy una :-((

Primero...
Worksheets(1).Shapes("TextBox1").Visible = True
... y por último...
Worksheets(1).Shapes("TextBox1").Visible = False


Sub MACRO1()
Dim x As Long
Worksheets(1).Shapes("TextBox1").Visible = True
DoEvents
For x = 1 To 100000000
x = x + 1
Next x
Worksheets(1).Shapes("TextBox1").Visible = False
End Sub


Saludos: Antonio.
Respuesta Responder a este mensaje
#9 Jorge
20/11/2009 - 13:07 | Informe spam
GRACIAS ANTONIO!!!!!!!!!!!!!!
Funciona perfectamente y tal como quería.
Nuevamente muy agradecido

Jorge


"AnSanVal" escribió:

No doy una :-((

Primero...
Worksheets(1).Shapes("TextBox1").Visible = True
y por último...
Worksheets(1).Shapes("TextBox1").Visible = False


Sub MACRO1()
Dim x As Long
Worksheets(1).Shapes("TextBox1").Visible = True
DoEvents
For x = 1 To 100000000
x = x + 1
Next x
Worksheets(1).Shapes("TextBox1").Visible = False
End Sub


Saludos: Antonio.


.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida