Можно так, в лоб:
Sub mac1()
Dim i As Integer
Range("A1") = 0
For i = 1 To 1000
Range("A1") = Range("A1") + 1
Sleep 10
DoEvents
Next i
Call mac1
End Sub
хотя я бы сделал, скорее всего так:
Sub mac1()
Dim i As Integer
Range("A1") = 0
For i = 1 To 1000
Range("A1") = Range("A1") + 1
Sleep 10
DoEvents
Next i
Application.OnTime Now, "mac1"
End Sub
Ну а т.к. в цикле есть DoEvents, то прерывание в любой момент можно сделать при помощи Ctrl+Break