Cordial saludo.. Necesito crear un progressbar en excel 2013 para controlar el avance de las macros
Tengo un archivo con varias macros.. Y necesito hacer el control de avence de ejecución de las macros que se están ejecutando.
1 Respuesta
H o l a:
Te envío varios ejemplos de progressbar que he implantando en diferentes archivos:
Como poner un control PROGRESSBAR en hoja excel
Para Dante - Barra de progreso
Implementar Progress Bar en macro para generar efecto visual
Barra de Progreso Excel VBA 2013
Barras de Progreso en Visual Basic
Como aplicar una ProgressBar mientras se ejecuta mi macro
El punto es que cada progressbar tiene que adecuarse a tu macro. O poner un avance por macro, es decir, si tienes 10 macros, entonces cada que termine una macro el progressbar avanzará un 10%.
En los ejemplos que te estoy enviando viene el código y la explicación de cómo adecuarlo a tu macro, si tienes dudas, entonces tendrás que enviarme tu archivo con las macros y con datos para adecuar un tipo de progressbar.
Espero que te sirva la información.
¡Gracias!
Muchas gracias por la pronta respuesta...no conozco mucho...
tengo esta macro..... donde pongo el codigo de la barra de progreso?
gracias
Sub borra1()
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False
Application.CutCopyMode = False
Dim Celda As Range
Dim palabra As String
Dim valida As String
Range("A1:A" & Columns("A:A").Range("A1048576").End(xlUp).Row).Select
palabra = "0x"
palabra = "*" & palabra & "*"
valida = "Information"
For Each Celda In Selection
If Celda.Value Like palabra Then
Celda.Select
ActiveCell.EntireRow.Select
ActiveCell.EntireRow.Delete
End If
Next Celda
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
ActiveSheet.DisplayPageBreaks = True
Application.CutCopyMode = False
End Sub
si tengo mas macros..las cuales llamo desde otra
Sub borra9()
Call importar
Call borra1
Call borra2
Call borra3
Call borra4
Call borra5
Call borra6
Call borra7
Call borra8
End Sub
Donde pondria la barra de progreso para verificar el avance de cada una?
gracias
¡Gracias!
Si claro que lo hice,,., pero como te digo.. soy nuevo en el tema,,, oriéntame una vez.. y ya con eso aprendo...
Probé inlcuyendo .. como dices.. mi macro en uno de los ejemplos.. donde dice
***
* Macro aca
**
O algo así.. pero no me funciono..
Yo no tengo formulario ... es un archivo básico de excel.. con las macro.. que te envíe,.,.. lo máximo que hice fue poner las otras macros en módulos... y en el último modulo.. puse la que hace las llamadas a las otras...
Hasta allí llegue.
Espero tu comprensión y paciencia... agradezco tu voluntad de enseñar...
H o l a:
El userform hay que crearlo. En tu caso habría que crear un userform con 2 "progressbar" uno mostraría el número de macro que se está ejecutando y otro mostraría el progreso de la macro en ejecución.
Para adaptar el userform a tu archivo y a tus macro, envíame tu archivo con unos ejemplos y te voy ayudando paso a paso.
Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario “carlos quintana” y el título de esta pregunta.
¡Gracias!
Hola dante.. ya lo envíe.. antes de que me escribieras .. no puse mi nombre.. pero reenvíe desde uno de los que me llegaron
Envíame tu archivo con las macros y algunos ejemplos en las hojas:
Mi correo [email protected]
En el asunto del correo escribe tu nombre de usuario “carlos quintana” y el título de esta pregunta.
H o l a:
Te anexo el código para el progressbar
Private Sub UserForm_Activate() 'Referencia: http://support.microsoft.com/kb/211736/es 'Mod.Por.Dante Amor LProgress.Width = 0 Label1 = "Cargando Archivo ..." DoEvents principal End Sub ' Sub principal() 'Por.Dante Amor Application.ScreenUpdating = False Application.DisplayAlerts = False ' ActiveSheet.Cells.Clear DoEvents ruta = "D:\REPORTES\" ruta = ThisWorkbook.Path & "\" With ActiveSheet.QueryTables.Add(Connection:= _ "TEXT;" & ruta & "desbloqueos Noviembre.txt", _ Destination:=Range("$A$1")) .Name = "desbloqueos Noviembre" .FieldNames = True: .RowNumbers = False: .FillAdjacentFormulas = False .PreserveFormatting = True: .RefreshOnFileOpen = False .RefreshStyle = xlInsertDeleteCells: .SavePassword = False .SaveData = True: .AdjustColumnWidth = True: .RefreshPeriod = 0 .TextFilePromptOnRefresh = False: .TextFilePlatform = 65001 .TextFileStartRow = 1: .TextFileParseType = xlDelimited .TextFileTextQualifier = xlTextQualifierDoubleQuote .TextFileConsecutiveDelimiter = False: .TextFileTabDelimiter = True .TextFileSemicolonDelimiter = False: .TextFileCommaDelimiter = False .TextFileSpaceDelimiter = False: .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1) .TextFileTrailingMinusNumbers = True: .Refresh BackgroundQuery:=False End With ' DoEvents Label1 = "Procesando Datos ..." con = 1 rep = 10 ' fin = Range("A" & Rows.Count).End(xlUp).Row For i = fin To 1 Step -1 If WorksheetFunction.CountA(Rows(i)) = 0 Then Rows(i).Delete ElseIf Cells(i, "A") Like "*0x*" Or _ Cells(i, "A") Like "*The*" Or _ Cells(i, "A") Like "*If*" Or _ Cells(i, "A") Like "*S-1*" Then Rows(i).Delete ElseIf Cells(i, "A") <> "sosservicios" And Left(Cells(i, "A"), 3) = "SOS" Then Rows(i).Delete End If ' If (con * 100) / fin >= rep Then UpdateProgressBar rep rep = rep + 10 End If con = con + 1 Next Application.ScreenUpdating = True Label1 = "Proceso Terminado" End Sub ' Sub UpdateProgressBar(ava) 'Por.Dante Amor UserForm1.Frame1.Caption = Int(ava) & " %" LProgress.Width = LProgress.Width + 30 DoEvents End Sub
- Compartir respuesta