Adaptar barra de progreso a mi macro

Tengo el siguiente inconveniente.. Gracias a Dante amor, gran experto de este foro, logré crear una macro brillante. El tema es que dependiendo del computador a veces tarda y quien no sabe esperar no entiende si la macro está trabajando o se trabó y tocan todo.. Tengo una barra de progreso que use en otras macros pero se me ha hecho difícil adaptarla.. Aparece antes.. Corre hasta en 100% y después que la cierro empieza a trabajar la macro..

Dejo mi mail así puedo enviarles respuesta con el archivo en cuestión..

[email protected]

1 respuesta

Respuesta
2

En lugar de la barra de progreso, te propongo una más simple.

En la barra de estado de excel (esquina inferior izquierda), va a aparecer un contador, indicando el número de fila procesada y el número de filas totales a procesar. De esa forma pueden ver que excel está trabajando.

Private Sub CommandButton1_Click()
'Por Dante Amor
    'Abrir Archivo
    '
    Application.ScreenUpdating = False
    Application.StatusBar = False
    hoja = "foglio1"              'nombre de la hoja del archivo
    col = "A"                   'columna destino
    ruta = Label1.Caption
    '
    'VALIDACIONES
    If ruta = "" Then
        MsgBox "Falta la ruta en el label"
        Exit Sub
    End If
    If Dir(ruta) = "" Then
        MsgBox "El archivo no exite"
        Exit Sub
    End If
    '
    'EJECUCIÓN
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("QH")
    Set l2 = Workbooks.Open(ruta)
    Set h2 = l2.Sheets(hoja)
    '
    n = 1
    u = h2.Range("E" & Rows.Count).End(xlUp).Row
    For i = 10 To u
        Application.StatusBar = "Procesando registro : " & i & " de : " & u
        If h2.Cells(i, "E").Value <> "" And IsNumeric(h2.Cells(i, "E").Value) Then
            'h1.Cells(n, col).Value = h2.Cells(i, "E").Value
            h2.Rows(i).Copy
            h1.Rows(n).PasteSpecial xlValues
            n = n + 1
        End If
    Next
    l2.Close False
    Application.StatusBar = False
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

[sal u dos

Está muy bueno.. es tema es que al iniciar el excel yo he puesto a solo aparezca el userform.. es decir que oculte todas las páginas del excel.. así que no habría lugar en donde eso se muestre.. por eso lo de la barra de progreso.. tengo una barra pero aparece antes y corre independiente de el trabajo de la macro.. una ves que llegó al 100 y la cierro empieza a trabajar la macro

Entonces pon esto en un label

Application.StatusBar = "Procesando registro : " & i & " de : " & u

Por ejemplo:

label1.caption = "Procesando registro : " & i & " de : " & u
DoEvents

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas