Contador en VBA - Excel.

Wire Less -  
tompols Mensajes publicados 1273 Fecha de registro   Estado Colaborador Última intervención   -
Hola a todos.

Tengo un programa que tarda bastante en ejecutarse, con muchas bucles que procesan muchos datos.

Dado que es bastante largo, me gustaría poder utilizar un contador. Entendí que lo mejor era usar un "userform". Bien, eso sé hacerlo.
Mi problema viene del ---- Application.ScreenUpdating = False ----- que utilizo ( ¡para evitar una crisis de epilepsia con todas las ventanas parpadeando! )

Así que no puedo ver mi userform actualizándose.

¿Alguien ha tenido este tipo de problema? ¿Y sobre todo, alguien tiene una solución?

Gracias
Configuración: Windows 2000 Firefox 3.0.13

2 respuestas

tompols Mensajes publicados 1273 Fecha de registro   Estado Colaborador Última intervención   460
 
Hola,
Application.screenupdating no se aplica a los userforms.
Para agregar el control de barra de progreso, haz clic derecho en la pestaña Controles de la caja de herramientas, luego en controles adicionales y selecciona el control Microsoft ProgressBar Control x.x
Luego, la idea es incrementar el valor de la barra de progreso de 1 a 100 mediante un bucle en función del porcentaje de avance de la macro (ahí es donde puede ser un poco complicado dependiendo de tu código)
--
Se entiende por una buena solución, la solución simple y fácil de un problema difícil y complicado.
0
Wire Less
 
Ailles ... ¡Sin embargo, mi código es súper simple!


Sub Toto
For i = 1 to 1000
Moulinette_1
Moulinette_2
...
Next
End Sub


¿Tengo que poner algo como
Private Sub ProgressBar1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As stdole.OLE_XPOS_PIXELS, ByVal y As stdole.OLE_YPOS_PIXELS)
End Sub

¿En algún lugar? ¿Es eso?
0
tompols Mensajes publicados 1273 Fecha de registro   Estado Colaborador Última intervención   460
 
non non, simplemente incrementando su valor de 1 a 100 (o modificando su propiedad valor máximo a 1000) en tu procedimiento :
Sub Toto For i = 1 to 1000 Moulinette_1 Moulinette_2 UserForm1.ProgressBar1 = i / 10 'suponiendo que el valor máximo de ProgressBar1 está definido en 100 (por defecto) Next End Sub 


--
Se entiende por una buena solución, la solución simple y fácil a un problema difícil y complicado.
0