Sin embargo, en casos excepcionales, como rutinas que pueden llegar a tardar muchísimo tiempo, lo cual puede dar la impresión al usuario final que Excel se ha quedado congelado y lo cierra de forma forzada, pues en esos casos sí es muy necesario crear una barra de progreso para informarle que la rutina está trabajando de forma normal y que pronto va a finalizar.
Pues en esta ocasión te traigo este paso a paso y lo sencillo y práctico que es, crear una barra de progreso la cual puedes adaptar a esas rutinas que suelen tardar mucho tiempo para cumplir con una tarea específica.
Puedes ver el vídeo a continuación...
Descarga el archivo base desde AQUÍ
excelente muchas gracias
ResponderEliminarHola se puede hacer sin necesidad que llene ninguna celda .. Gracias
ResponderEliminarExcelente profesor. muchisimas gracias
ResponderEliminarPerfecto, pero para hacer que funcione en archivos confeccionados sin rellenar ninguna celda..?
ResponderEliminarbuenas muchas gracias por la explicacion,necesito adaptarla a esta macro
ResponderEliminarSub BorrarRangoTodasLasHojasSegunRangoSeleccionado3()
'On Error GoTo Errores
For Hojas = 2 To 15
Sheets(Hojas).Range("A5:g500").ClearContents
'DoEvents
Next
MsgBox "BORRADA LA PRIMER DIVISION"
MsgBox "Borrando Saticfatorio" & vbCrLf & vbCrLf & "Verifique las DIVISIONES para corroborar.", vbCritical, "AVISO:"
DoEvents
Exit Sub
Errores:
End Sub
es posible? es mas largo el proceso ya que son 237 hojas en 7 grupos gracias espero tener suerte con la respuesta
Muchas Gracias por compartir su conocimiento, Me parece una buena herramienta poder implementar una barra de progreso, pero falto lo mas importante aparte de crearla, como utilizar esto en un proceso determinado.
ResponderEliminarAgradezco su atención.
buenos días quisiera saber como hacerlo funcionar pero con un textbox que cuando escriba 50% me refleje esos 50% en mi barra de estado ?? alquilen me podría ayudar :(
ResponderEliminarNecesitaríamos mas información para poder ayudarte... lo que dices parece sencillo pero tampoco entiendo el contexto y el propósito de hacerlo... porque la idea aquí es "medir" el avance de algo y lo que tu pareces querer hacer es "registrarlo", forzar a que sea, por ejemplo, 50%. Fijate que en el video muestra como cambiar la propiedad "caption" del label, sería cuestión de que uses el evento "change" del textbox para que modifique el caption del label... por ejemplo.
EliminarPrivate Sub TextBox1_Change()
'Armar e incluir alguna rutina que controle que el usuario termine de ingresar el dato completo (por ej: 50)
Label#.Caption = TextBox1.Text & "%"
End Sub
Para los que preguntan como incorporarlo a sus macros: Lo que entiendo es que vb ejecuta las macros de manera secuencial, es decir línea por línea (exceptuando saltos entre funciones) pero en general no puede hacer una ejecución para mostrar la barra de progreso y al mismo tiempo "detrás" correr nuestra macro. La instrucción "Do events" parece exigirle a vb que pese a que está ocupado mostrando la barra, siga haciendo cosas.
ResponderEliminarEntonces la idea (CREO, según entiendo) es que nuestra macro, en algún momento llame al formulario de la barra de progreso que como tiene el evento activate "programado" hará las cosas por su cuenta y la instrucción "Do Events" premitirá que vb continúe con la ejecución de la macro. Lo que queda por lograr es que tanto el "conteo" del progreso, como la ejecución de la macro terminen al mismo tiempo y será cuestión de probar cambiar los parámetros de los bucles for para que la barra permanezca mas o menos tiempo y termine mas o menos cuando la macro termina.
Hasta ahora, en las pruebas que estuve haciendo con una macro que a mi entender amerita una barra que le indique al usuario que debe esperar... no he logrado esa coincidencia. Es como que realmente la capacidad de calculo disminuye (lógico) cuando vb está haciendo las dos cosas, y cuando termina con la barra de progreso, pone todas sus fuerzas en la macro y la termina, pero el solapamiento no es "coherente", la barra termina, desaparece (así la programé) y vb tarda unos 5/10 segundos mas en terminar la ejecución de la macro general independientemente de cuanto estire el proceso de la barra de progreso. Hagan sus pruebas.