Cómo crear una barra de progreso en un UserForm | VBA Excel 2016
ฝัง
- เผยแพร่เมื่อ 9 พ.ย. 2024
- Si bien es cierto las barras de progreso implementadas en nuestro proyecto VBA nos ayudan a informar al usuario final de cuánto tiempo va a demorar una rutina específica, PERO...esto es una carga adicional en memoria al momento de compilar y ejecutar dichos procesos.
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.
Descarga el archivo base desde aquí: goo.gl/cNUHU6
SUSCRÍBETE A MI CANAL ❤: bit.ly/ottojavi...
Sígueme en las Redes Sociales
Facebook: bit.ly/Facebook...
Twitter: bit.ly/twitter_OJG
Google Plus: bit.ly/GooglePl...
Instagram: bit.ly/Instagra...
Visita www.excelymas.com
Espectacular!!! después de cacharrear un poco; logré implementarlo en mi proyecto, muchas gracias por su valioso aporte y por compartir su conocimiento.
que gran conocimiento y contenido de calidad es usted un gran maestro, Dios lo bendiga
Muchas gracias! Un fuerte abrazo!
Simplemente perfecto.... Tengo un proyecto con rutinas largas y esto que aprendí hoy con usted, servirá para evitar que el usuario desespere y así evitar que excel colapse. Muchas gracias por tan increíbles enseñanzas estimado profesor.
ADORO TU INTELIGENCIA Y TU PROFESIONALIDAD GRAN PROFESOR ERES EL MEJOR
Genial, como siempre.
Eres un mago. Presentas de forma sencilla los eventos complejos.
Muchas gracias por hacernos pasar un buen rato aprendiendo rutinas interesantes.
+Vadorin Muchas gracias por tu comentario. Me motiva muchísimo el saber que el contenido es bien recibido. Un abrazo :)
Muy bueno, en especial la lógica del ancho del frame como el 100%. Aunque este video tiene como 6 años pienso que ya has aprendido mucho más sobre VBA. Pero igual, te dejo mis aclaciones. 1°, no es que Excel se cuelga, si no que como está en proceso debe terminar. 2°, Para detener ese proceso se pulsa CTRL+Pausa/Inter, o CRTL+Pause/Break
Maestro otto nuevamente sorprendido una disculpa por no haver checado su video pero la verdad cada video es mas sorprendete lo que se puede hacer en la aplicacion de Excel espero y siga subiendo videos la verdad en mi trabajo sus tutoriales me han ayudado mucho le agradesco todo maestro otto y como siepre se lodigo cada video nos deja con un muy grato sabor de boca esperamos otros videos para aprender mas gracias maestro feliz dia
+Roberto Nicolas Ramirez Rivera Muchísimas gracias por tu apreciación y valoración. Tus palabras me motivan muchísimo para seguir adelante :)
Excelente video, lo felicito personas como usted permiten a las personas alcanzar otro nivel dentro de sus trabajos, Gracias
Gracias por el aporte.
!!! Máquina !!!
Lo he implementado en mi macro que copia cientos de registros al pulsar un botón.
Asi el usuario no puede cancelar el proceso y se entretiene mirando el progreso de la barra.
Ademas queda estilo Windows 10.
Gracias
Absolutamente impresionante. Muchísimas gracias por tan buen aporte y un saludo desde España.
Eres de los mejores maestros que he tenido Muchas Gracias
+Angel N. Aldaco Me alegra mucho tu valoración. Saludos cordiales :)
Buenas Otto, a la verdad que me sorprende cada día mas con sus conocimientos, mas que avanzado en Excel. Felicidades por su maravilloso trabajo. Por favor si me permite contactar con usted se lo agradezco.
Gracias por tus codigos y ayuda, haces que cada dia me enamore mas de excel, enhorabuena. Saludos.
maestro otto viendo tu video exelente pulgar arriba..
Saludos, y gracias por tan valiosa colaboración. Podrías ejemplificar la misma rutina con el adicional de que indique el tiempo de cálculo, es decir, porcentaje de progreso + contador de tiempo del progreso segundo a segundo
Excelente video Otto sos un grande! Comparto que sos increíble para explicar rutinas complejas de manera muy fácil!! Y me hiciste reir mucho con la explicación de DoEvents jajaja
+Gonzalo Severiens Muchas gracias Gonzalo por compartir tus impresiones. Un abrazo :)
EXCELENTE VIDEO MASTER!!! MUCHAS GRACIAS!!!
Saludos Profe, como todo lo que publica de un gran valor para nuestro conocimiento, tengo una sugerencia con todo respecto, si en el codigo de vba trasladamos el Next C debajo del comando DoEvents, de esta forma podemos ver el avance conforme a la escritura de los registros, en el sitio que se encuentra el programa primero llena todos los numeros en cada una de las celdas y luego si pasa a realizar la presentación de la barra.
Saludos y gracias. Muy útil 👍
Magnifico! vídeos así si valen la pena verlos tomando una taza de café
+Nilson Rodriguez Gracias por la valoración :)
Wao realmente brillante
IMPECABLE! muchas gracias!
Excelente, Gracias
Muy buena la explicación, mi estimado Otto, pero me gustaría saber en parte del código se pondría mi macro, si es al final del proceso, primero tendría que terminar la barra de progreso y después la macro, gracias por tu aporte.
Excepcional, profesor. Muchas gracias.
+Antonio8688 Me alegra mucho que te guste. Saludos cordiales :)
gracias maestro excelente digamos cuando tengo es solo una clave para entrar al programa no se demoraria nada creo que ni lo alcanzaria a ver tocaria hacerlo pero con photoshop creo
excelente tutorial, muy bien explicado gracias!
Excelente OTTO....!!!!!
Hola Otto, gracias por este extraordinario video. Otto se puede hacee un userform con esquinas redondeadas en vba, saludos desde Chile
Muchas gracias, Se puede visualizar el tiempo de ejecución de una macro?
Muchas gracias Otto por los conocimientos que ponés a disposicion, una consulta, no recuerdo si la hice ya, de paso le servirá para editar otro video, como sería para cada vez abrír un libro de excel se vayan cambiando imágenes o fotos (20 0 25) desde un archivo e inserte un botón Active X ya aconfigurado y activado para llamar un formulario. La foto insertada debe ocupar el tamaño de la hoja de calculo y el botón en el centro de la imagen o foto. Desde ya muchas gracias y esperando sea favorable saludo desde Argentina muy Atte..
Muito bom! Excelente vídeo. Parabéns e obrigado por compartilhar!!
gracias justo lo que necesitaba "doevents"
Excelente. Ahora el reto está en como integrar esta macro de progreso con la macro que necesito que se ejecute. Por ejemplo, como integro o enlazo esta macro con otra macro que copia 5000 datos de una hoja a otra hoja y que en la medida que se van pasando los datos a la hoja destino, se muestre la barra de progreso en ejecución simultáneamente. Agradezco comentarios.
Estimado Otto, muchas gracias por compartir desinteresadamente sus conocimientos. tengo una duda: realicé una macro para el control de stock de un centro logístico, la cual actualiza datos desde SQL (stock, rotaciones, Transferencias entre bodegas, etc) luego actualiza tablas dinámicas indicando posibles quiebres de stock, transferencias prioritarias, etc por cada sku activo. ¿ como podria adaptar esta barra de progreso a mi macro,? ( esta macro no tiene bucles ni ciclos)
gracias de antemano y saludos desde SCL.
Maestro Otto, Gracias por el video. y como seria para agregar label que me indique el tiempo restante que queda para que termine de ejecutar un proceso ?
Excelente!
Excelente maestro.
Se podría efectuar sin afectar la hoja de excel?
+Bennet Bent Abrahams por supuesto :)
Hola Otto, lo he intentado hacer con una hoja que está bloqueada, por supuesto no va ha funcionar. En donde tendría que cambiar el código para que funcione sin necesidad de desbloquear la hoja? Gracias...
Very nice 👍
Olá! Tu podes mostrar como hacer para um formulário no Access.
Muito bons tuas vídeos aulas!!!
Hola graciad por sus vídeos de gran interés. Algún libro que me recomiendoe sobre todo el tema en general.
De ante manos gracias
Saludos
muy buena aplicacion señor Otto muchas gracias ,y como seria para q aparezca una barra de progreso a la hora de realizar una conexion sql desde excel,cuando llegue a 100% salga un msgbox que nos diga que estamos conectados a la base de datos
Ola, obrigado pelo vídeo! Só não entendi onde tenho que chamar as outras macros.. ou seja, enquanto a barra corre, onde aciono as outras macros?
interesante...
profesor y eso mismo podria aplicarlo com un splash?
Esta barra de progreso en particular trabaja en base a una rutina que se está procesando y medirá el tiempo en porcentaje para ver cuánto demora. El splashform en el Gestor de inventarios, es puramente una barra de maquillaje para darle elegancia al proyecto... es decir, no sirve de nada en ese caso.
Excel y Más okis estimado profesor.... Gracias por la aclaración... Saludos
Saludos Wilder y gracias por ser el primero en comentar :)
Esta barra de progreso para que tipo de negocio es aplicable. Buen día.
Buenisimo
Genial!!!, gracias
+Walter Puentes gracias por tu comentario :)
Saludos Otto, una consulta, pudiese usar ese "DoEvents" en todos mis formularios que tarden varios segundos en ejecutarse? hay algunos que tardan 2 o 3 segundos y no genera molestia, pero si tengo mas procesos en el computador, algunos formularios pudiesen tardar mas de 5seg. no hay problema en usar ese comando a voluntad??
Buenísimo... Ahora quisiera saber cómo quitar ese poco de números o que no aparezcan o mandarlos a otra dirección porque me estorban el dash.... T_T
Sabes si se puede hacer una barra también en Access 2013 ????
Buenas Don Otto. ¿Como puedo aplicar esta barra a una cadena de instrucciones no numéricas? Tengo una macro que recopila datos de varias Libros para almacenarla en uno solo, pero tiene que entrar en varias hojas. Esto demora tiempo y me pasa lo que describes; "Cierran el archivo ya que no ven que pase nada por momentos, aunque si lo dejaran, termina sin problema". Agradeciendo su tiempo y el compartir el conocimiento, me despido deseándote mucho éxitos más.
+Jose D Maroto Buenos días José, todo lo que implique ciclos, ya sean con for next, Do While, no importa si es procesos con texto o numérico, lo puedes adaptar fácilmente :) Si te dificulta hacerlo, envíame tu código a mi correo y yo te lo adapto con el mayor de los gustos :)
Gracias Don Otto. Voy a intentarlo, sino te lo paso. Muchas gracias!
Es mi ídolo XD
dentro de código si pones esto al inicio se ejecuta primero la barra de estado y luego ya tarda lo que tarde la macro en tardarse???? o si lapongo al final ........primero dura un ratote y luego lo de la barra de estado
En el caso que quisiera añadir a otro formulario como podría declarar en este código para que se vea porcentaje que hace una consulta? de antemano muchas gracias
muy bueno! ¿y como se podría hacer mientras se están copiando datos?
me refiero a si se puede hacer si se pega una tabla de datos con mucho contenido.
+Juanma Agudo Simplemente toma el ciclo de tu rutina y sustituye la rutina del ejemplo. :)
+Juanma Agudo Si tu rutina no es un proceso que tenga que realizar ciclos para llevar a cabo una tarea, pues no lo puedes hacer, ya que los ciclos determinan en porcentaje la barra de progreso.
esta es la rutina que tengo:
Range("A1").Select
Do While ActiveCell Empty
ActiveCell.Offset(1, 0).Select
Loop
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWorkbook.Worksheets("Hoja20").Range("c2").Select
''ActiveSheet.Unprotect
Do Until ActiveCell = ""
While ActiveCell = 991
ActiveCell.EntireRow.Delete
Wend
ActiveCell.Offset(1, 0).Select
Loop
Do Until ActiveCell = ""
While ActiveCell = 910
ActiveCell.EntireRow.Delete
Wend
ActiveCell.Offset(1, 0).Select
Loop
Do Until ActiveCell = ""
While ActiveCell = 925
ActiveCell.EntireRow.Delete
Wend
ActiveCell.Offset(1, 0).Select
Loop
+Juanma Agudo Y todo esto lo ejecutas en un solo evento?
Primero agradezco su tiempo felicito por su aporte, pero tengo unas preguntas:
1: como lo adapto a una macro que ya tengo, a donde le inserto
2: mi macro tiene un varios eventos, pero en si la mayor parte del codigo esta en uno solo, como hago para que la barra se adapte al avanze de este, ya que el tiempo de demora depende de la cantidad que se procesa durante el dia.
3: para el caso de los eventos como seria el codigo
De ante mano mil gracias por su atencion y respuesta.
Muy buen vídeo, pero me quedo una duda! ¿Como puedo hacerle para que este comience a calcular no desde A1 sino desde B5? es decir que no lo que calculo se encuentra despues de la columba "b" y la fila "5".
Otto, ¿en otros códigos VBA dónde debo poner DOEVENTS, para liberar al sistema de carga operativa?
Buenas tardes, saludos desde Mexicali, Baja California, México, tengo la misma duda, de echo leí cada comentario para ver si ya habían hablado del tema, tengo una rutina que tiene 3 ciclos anidados, ¿donde debo de colocar el DoEvents para aligerar las rutinas?
excelente amigo, pero como adapto ese codigo a mi macro ya creada
Buenas tardes prof. otto saludos esta pregunta no esta relacionada directamente con este video pero se que usted me puede aclarar esta duda tengo un libro ventas y otro inventario trato de hacer un useform para llamar datos desde un libro a otro la informacion pero la sub rutina se rompe, esto es: cuando escribo los caracteres en el texbox solo puedo ir tecleandolos de uno en uno que digo con esto quiero escribir CARROS para que el list me despliegue todos los datos que cumplan con esta condición pero cada vez que tecleo una letra se sale del texbox no del formulario tengo que ir tecleando letra por letra a medida que se sale del texbox lo cual me desconcierta por que el ""mismo formulario"" dentro del ""mismo libro"" me permite teclear los caracteres de forma continua sin salirse del texbox hasta listar los datos que cumplan con la condición no se si me explico pero se que usted me entiende
Ah y una consulta Otto que siempre estoy por preguntarte y nunca lo recuerdo, resulta que tengo varios userform en un proyecto y gran parte de ellos se inician con la propiedad ShowModal = false , dando un dolor de cabeza al momento de poner un MsgBox ya que el formulario lo envia al fondo de la pantalla osea que si tenes un programa en pantalla el userform se queda detrás de todo, hay alguna manera de solucionarlo a esto?
+Gonzalo Severiens Déjame hacer pruebas con eso y veré cómo solucionarlo :)
Buenas noches Profe, consulta, tendrá usted la macro de copiar y pegar? He estado tratando de hacer, hasta grabe una macro a ver si salia y siempre me arroja el error. De verdad que no entiendo que pasa.
------------------
Sub Macro2()
'
' Macro2 Macro
'
'
Sheets("DATOS").Select
Range("V3").Select
*** Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'*** Aqui me da error
Range("V3").Select
End Sub
----------------------
Agradecere su ayuda enormemente.
Faltó un detalle que les servirá a muchos!!
La pregunta es:
Si ya tengo una marco hecha ( y que tarda varios segundos en completarse) EN QUE PARTE DE LA MACRO se inserta o se llama al formulario para que indique su progreso??
Lo que a mi me interesa es que la barra de progreso indique cuanto falta para que mi macro termine...
Creo que ese detalle no esta..
Gracias!!!
Pudiste resolver este caso que mencionas o tuviste que pasar la macro adentro del formulario???
@@platanito7243
Finalmente pude resolver mi problema con otros métodos para que la macro no tarde tanto.. Pero mi duda planteada más arriba no pude encontrar como resolverla.. Y tampoco seguí investigando sobre el tema..
@@alejandrorodriguez2720 Gracias, ya pude resolver este problema lo único que hice fue mandar llamar el formulario dentro de mi macro
UserForm1.Show (el formulario esta configurado como ShowModal = false )
y dentro del ciclo voy actualizando el formulario (cabe mencionar que en mi proceso es en base a filas por eso solo tomo esta variable)
UserForm1.Label1.Caption = Format(Conteo / nFilas, "0%") & " completado"
---> para mostrar el avance
UserForm1.Label2.Width = (Conteo / nFilas) * UserForm1.Label1.Width
--> para ir aumentado la barra verde
DoEvents
y fuera del ciclo
Unload UserForm1
Saludos
@@platanito7243
Muchas gracias por el aporte! La verdad es que me había rendido con ese problema.. Y ya casi que me había olvidado en que quedó Todo.. Ahora voy a retomar el problema a ver que tal me funciona..
Gracias.. Saludos!!
Estimado profesor, quisiera expresarle una inquietud que tengo para el uso de esta barra de progreso, pero no se como integrarla a mi trabajo, no se si me pueda apoyar brindándome su correo y apoyo para resolverlo
pero el estaatus bar depende.del numero que uno.le asigna. mannual... que pasa si mi proceso es de periodo vaariable que depende del.volumen de informacion? como hacer para que finalice en parlelo cuando terminaa el.prooceso.de la.macro?
Victor Rodriguez tienes la duda aún??
a mi no me sale lo del cuadro de herramientas al insertar el formulario, como puedo hacer? ayuda uu
Una pregunta, cuando lo ejecutas, y termina el 100%. termina mostrando nuevamente el codigo. y el usuario no deberia ver el codigo, que hay que hacer para que al teminar, la imagen se quede en la hoja de excel y no en la hoja del codigo ??. gracias
Apoyenme con un tutorial de inventario control en access
+Juan Chong Dime por correo lo que necesitas. Y ahí te comentaré :)
facilitame tu correo o donde lo visualizo??? el mio es juancho_54632@hotmail.com
buenos dias tengo una pregunta como lo puedo acomodar a una hoja que cuenta con 21.000 filas en el momento en el que busco un producto el se demora en mostrarme el resultado como puedo acomodarlo de tal forma que cuando escriba el nombre me muestre esta parte, gracias
profesor, muy educativo sin embargo veo que sólo contesta los comentarios de felicitaciones, pero la pregunta que varios usuarios seguidores le plantean , no responde y prácticamente, deja obsoleto este curso
¿ como se aplica ésta macro, en una que ya está elaborada, para que al momento de correrla aparezca la barra de progreso cuando concluya el calculo ?
o lo explico de otra manera, misma pregunta de otro seguidor ( sin respuesta) :
Jonathan Elgueta Elgueta / Hace 1 mes
excelente amigo, pero como adapto ese código a mi macro ya creada
Alejandro Rodriguez /Hace 1 mes
Faltó un detalle que les servirá a muchos!!
La pregunta es:
Si ya tengo una marco hecha ( y que tarda varios segundos en completarse) EN QUE PARTE DE LA MACRO se inserta o se llama al formulario para que indique su progreso??
Lo que a mi me interesa es que la barra de progreso indique cuanto falta para que mi macro termine...
Creo que ese detalle no esta..
Gracias!!!
muchas gracias, y esperamos su respuesta
aun necesitas ayuda?
Hola, a mí me da error al ejecutarlo, me pone error de compilación: No encontró el método o el dato miembro, recién estoy aprendiendo con las macros. Muchas gracias
Excelente profesor, pero tengo 1 problema cuando le escribo la linea de Cells.Clear cae en error, le dejo lo que escribi a ver si encuentra mi error yo escribi tdo como usted dijo y funciona perfecto pero el problema es cuando escribo esa linea en especifico, de nuevo muchas gracias por su olaboracion.
Private Sub UserForm_Activate()
Dim Conteo As Long
Dim Nfilas As Long
Dim Ncolumnas As Long
Dim F As Long
Dim C As Long
Dim Porcentaje As Double
Cells.Clear
Conteo = 1
Nfilas = 300
Ncolumnas = 100
For F = 1 To Nfilas
For C = 1 To Ncolumnas
Cells(F, C) = Conteo
Conteo = Conteo + 1
Next C
Porcentaje = Conteo / (Nfilas * Ncolumnas)
Me.Caption = Format(Porcentaje, "0%")
Me.Label1.Width = Porcentaje * Me.Frame1.Width
DoEvents
Next F
Unload Me
End Sub
Hector Vinasco prueba poniendo Activeworkbook.cells.clear
o
Acriveworkbook.cells = “”
@@AlvaraCOP Ok muchas gracias, lo intentare.
Hola Profe, como siempre dándonos conocimientos del vba que sigue estando vivo. Tan sólo una pregunta, dependiendo de cada pc, cómo puedo determinar el tiempo que tarda en completar la macro. Me explico, habría alguna fórmula para que acabe antes la macro que el formulario que tiene la barra de progreso.
Gracias
xfalco@hotmail.com
PERO EN UN CASO PRACTICO DONDE SE TENGA QUE INCLUIR UNA MACRO DE VERDAD DONDE SE INCLUYE, ?? OSEA QUE NO SEA PARA CONTAR NUMERITOS
JOSE LEONARDO ESTEPA PARRA aun necesitas ayuda?
disculpa como me puedo contactar contigo?
+Annie Castillejos mi mail es otto@excelymas.com