Ventana de Carga durante ejecución de macro Excel VBA

He estado trabajando en una ventana de carga mientras se ejecuta una macro algo demorada en Excel, desarrolle el siguiente UserForm para tal fin, este posee un GIF animado (el cual funciona bien):

La idea es que de manera simultanea, que la macro realice sus tareas, se muestre el UserForm de carga, y cuando finalice la macro, se oculte el UserForm.

En mi intento #1, trate de probar algo asi:

UserForm3.Show

Call Macro
UserForm3.Hide

Pero obviamente no funciono, así que trate de colocar la Macro dentro de: 

Private Sub UserForm_Activate() 

y tambien en:

Private Sub UserForm_Initialize()

Pero en los dos casos el UserForm se muestra asi:

Y solo hasta cuando termina todas las operaciones la Macro, es que el UserForm se muestra de la manera correcta, es decir, no tiene ningún sentido mostrar el mensaje con el GIF de carga cuando ya finalizo la Macro.

Agradezco la colaboración de los Expertos y estoy abierto a aprender y escuchar de sus aportes.

Respuesta
-1

No entiendo mucho de vba, pero tiene que ser muy pesada la macro para que de tiempo a mostrar el formulario. Quiero decir que si la macro se ejecuta rápido, como debe ser, no tiene sentido ese formulario.

Lo único que se me ocurre que puedes hacer, es ponerle un tiempo a la macro para que se ejecute unos segundos después de mostrar el formulario.

1 respuesta más de otro experto

Respuesta

Si tu idea es un userform de carga simplemente por elegancia hazlo asi

Esto en un modulo, una macro para cargar la imagen y otra para cerrar el form

Public Sub Carga_Gif() ' Con esta macro cargamos la imagen y llamamos el form
img = "C:\Carpeta\TuImagen.gif"
img = ThisWorkbook.Path & "\TuImagen.gif"
UserForm1.WebBrowser1.Navigate "about: <html><body scroll='no'>" & _
    "<center><img src='" & img & "' width='300' height='300'>" & _
    "</img></center></body></html>"
Call NombreTuMacro
UserForm1.Show
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''
Sub CierraForm() ' Con esta macro cerramos el form 
Unload UserForm1
End Sub

y esto dentro del form que contiene el gif

Private Sub UserForm_Activate() 
'Con esta macro 3 segundos despues de activado se cerrara el form
Application.OnTime Now + TimeValue("00:00:03"), "CierraForm"
End Sub

De esta forma una ves que se active estara 3 segundos abierto "haciendo que carga" y luego se cerrara jeje

Si esta informacion te fue de utilidad
No olvides valorar la respuesta y cerrar la pregunta

No me funciono Sebas Torres.

Primero me sale ese error en el recuadro, y segundo no tiene sentido ejecutar la Macro antes de mostrar el UserForm, ya que cuando el mensaje de cargando se muestre, ya la Macro ha finalizo todos los cálculos. La idea es que mientras trabaja la macro, el UserForm de cargando se muestre.

Gracias por tu buena intensión, muy amable.

Te cree un archivo revisa si te sirve y es eso lo que necesitas... de paso ahi tienes una barra de estado jeje =P

LINK DE DESCARGA DE EJEMPLO

Si tu imagen no esta en la misma carpeta que tu archivo excel entonces cambia esta línea

img = ThisWorkBook.Path & "\GifCarga.Gif"

por esta

RutaImg = "C:\Users\User\Desktop\x\GifCarga.gif"
img = RutaImg

eso evitara el error que me comentabas que la imagen no aparecia...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas