¿Es mejor mostrar ProgressBar UserForms en VBA como modal o no? ¿Cuáles son las mejores prácticas para desarrollar indicadores de progreso en VBA?¿Es mejor mostrar ProgressBar UserForms en VBA como modal o no?
Los UserForms sin modo requieren el uso de Application.Interactive = False
, mientras que los UserForms modales por su propia naturaleza bloquean cualquier interacción con la aplicación hasta que el procedimiento principal haya finalizado o se haya cancelado.
Si se utiliza Application.Interactive = False
, sin embargo, la tecla Esc interrumpe la ejecución de código, por lo que el uso de Application.EnableCancelKey = xlErrorHandler
y tratamiento de errores (Err.Number = 18
) es necesaria tanto en el formulario de usuario y el procedimiento de llamada.
Los procedimientos de llamadas que hacen un uso intensivo de los recursos también pueden provocar que los eventos CommandButton_Click
y UserForm_Activate
fallen en UserForms no moderados.
En general, los indicadores de progreso que usan UserForms modales parecen más simples, porque el código que se está ejecutando está totalmente contenido en el módulo UserForm, y hay menos necesidad de pasar variables.
El problema, sin embargo, con el uso de UserForms modales para indicadores de progreso es que se requiere un módulo UserForm por separado para cada procedimiento que necesita un indicador de progreso, porque el procedimiento de llamada debe estar dentro del procedimiento UserForm_Activate.
Por lo tanto, si bien es posible tener un único indicador de progreso reutilizable en un UserForm no modal, será menos confiable que ejecutar el código desde múltiples UserForms modales.
¿Qué camino es mejor?
Gracias!
Gracias por la sugerencia de GSerg, pero he intentado usar eso en el pasado, pero Excel 2007 deja de actualizar la ventana y muestra "No responde" en la parte superior de la ventana de la aplicación. – Kuyenda
No tengo mucha experiencia con Office 2007, pero ¿qué ocurre si llama a DoEvents justo después de establecer un valor en 'StatusBar'? – GSerg
Eh, eso funcionó. Guau, esa es una buena opción para tener, ¿no? Gracias GSerg! – Kuyenda