Recorra filas y muestre cada dato en el Label de un formulario Excel

Cómo podría ajustar la macro para que me muestre en el label de un userform, con un tiempo de retraso de menos de 1 segundo, cada dato que encuentre en el recorrido de celdas de una hoja, . La aplicación Wait retrasa 1 segundo como mínimo.

Private Sub CommandButton1_Click()
u = Sheets("Anexo").Range("B100").End(xlUp).Row
For i = 2 To u
Label1.Caption = Sheets("Anexo").Cells(i, 6)

Application.Wait (Now + TimeValue("00:00:01"))   'Quiero que sea menos de un segundo
Next
End Sub

2 respuestas

Respuesta
2

En un módulo nuevo, pon lo siguiente:

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Actualiza tu código con lo siguiente:

Private Sub CommandButton1_Click()
  Dim u As Long, i As Long
  u = Sheets("Anexo").Range("B100").End(xlUp).Row
  For i = 2 To u
    Label1.Caption = Sheets("Anexo").Cells(i, 6)
    Sleep (500)
    DoEvents
  Next
End Sub

500 es medio segundo, si lo quieres más rápido lo puedes cambiar a 300 ó 100.

Respuesta
1

Fernando, te anticipo que no tengo ni idea de Excel. Pero por si te puede dar una idea tienes el evento

Private Sub Form_Timer()

Donde tu le fijas, en milisegundos, lo que quieres que haga o repita una instrucción. Y en combinación con me. Timeinterval, donde le dices el tiempo que tiene que transcurrir entre dos períodos. Te pongo un ejemplo, en Access para recorrer registros. En algún evento le digo

me.timerinterval=100 ( o sea, cada décima de segundo)

y en otro evento, o en el mismo

Private Sub Form_Timer()

dim a as integer

a=nz([a])+1

end sub

De forma que cuando suceda algo empezará a "contar". A la décima de segundo, en A te pondrá 1, a la décima siguiente te pondrá 2

En tu caso sería, más o menos

Etiqueta1.caption=...

Como lo traslades a Excel, ya no tengo ni idea.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas