OK, I've always done .OnTime loops something like this
Option Explicit
Dim VarSeconds As Integer
Dim AllStop As Boolean
Dim VarTime As String
Sub START_Button()
If Not AllStop Then
VarSeconds = ActiveSheet.Cells(4, 3)
VarTime = Now + TimeValue("00:00:" & Format(VarSeconds, "00"))
Application.OnTime VarTime, "Cicle2"
End If
End Sub
Sub STOP_Button()
AllStop = True
End Sub
'----------------------------------------------------------------------------------------------------------
Sub Cicle2()
Debug.Print VarTime, "Cicle2"
With ActiveSheet
Application.Run .Cells(2, 1).Value, .Cells(2, 2), .Cells(2, 3), .Cells(2, 4), .Cells(2, 5)
Application.Run .Cells(3, 1).Value, .Cells(3, 2), .Cells(3, 3)
Application.Run .Cells(4, 1).Value, .Cells(4, 2), .Cells(4, 3)
End With
Call START_Button
End Sub
'--------------------------------------------------------------------------------------------------------
Sub Test1(Var1 As Boolean, Var2 As String, Var3 As String, Var4 As String)
If Var1 = True Then
Debug.Print VarTime, "Test1", Var2
End If
End Sub
Sub Test2(Var1 As String, Var2 As Integer)
Debug.Print VarTime, "Test2", "The : " & Var1 & " is " & Var2
End Sub
Sub Test3_Change_Period(Var1 As String, Var2 As Integer)
VarSeconds = Var2
Debug.Print VarTime, "Test3", VarSeconds
End Sub