Aquí te dejo el código:
#If VBA7 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 'For 32 Bit Systems
#End If
Sub ListarNumeros()
Range("E1:E30").Value = vbNullString
Dim contador As Integer
For contador = 1 To 30
Cells(contador, 5).Value = contador
Sleep (10)
Next contador
End Sub
Aquí te explico como funciona:
Para esperar un tiempo en una macro normalmente se usaría la función Application. Wait(), pero hasta donde sé, esta no permite trabajar con valores menores a 1 segundo. Así que para esperar milisegundos, usamos la función Sleep del sistema y hay que declararla antes. (Esto es un tema más avanzado que aprenderás en el camino)
Para borrar lo que hay escrito he usado la línea: Range("E1:E30").Value = vbNullString otras personas quizas usen . ClearContents pero yo prefiero usar vbNullString (es mas rápido y adecuado para lo que quieres)
Luego el for que ya tienes pero mejorado. No necesitas ir hasta 31 y luego chequear si el contador es 31 y entonces salir; eso es innecesario y mala práctica. Simplemente haces un bucle de 1 a 30 y cuando llega a 30 ahí termina, no hay más nada.
Y luego lo que tanto necesitas. La función Sleep que recibe como parámetro un valor long que representa los milisegundos, 1 segundo = 1000, medio segundo (0.5) = 500 por lo tanto, 1 milisegundo (0.1 segundos) = 10. De ahí la línea Sleep(10)
Andy M.
Podrías ayudarme con una pregunta amigo que hice el 31 es de bloc de notas y llevar sus líneas a un combobox. Gracias - Franco Chavez