使用Application.OnTime循环

时间:2016-01-08 13:44:23

标签: excel excel-vba vba

我有一个正在运行的程序,但我正在努力改进它。 实际代码是这样的:

Sub Main()
    frequencyinterval = Now + TimeValue("00:00:10")
    Application.OnTime frequencyinterval, "Sheet1.Subordinate"
End Sub

Sub Subordinate
    'Do some things
    Call Sheet1.Main 
End Sub

在我看来,像这样的东西比从sub调用Main更好。问题是它关闭了Excel。

Do While Cells(10, 1).Value = "Running"
    Frequencyinterval = Now + TimeValue("00:00:10")
    Application.OnTime frequencyinterval, "Sheet.Main"
Loop

我很感激任何建议。

我认为递归调用很糟糕。然而,没有其他工作。在do内等待可以停止进入股票价格的数据。

程序运行几个小时后,我的计算机进入慢速状态,之后才锁定。

1 个答案:

答案 0 :(得分:1)

运行Main一次以启动循环

Sub Main()

    If Cells(10, 1).Value = "Running" Then

        'do some things
        Call CheckTheThing()

        'Schedule the next run
        frequencyinterval = Now + TimeValue("00:00:10")
        Application.OnTime frequencyinterval, "Sheet1.Main"

    End If

End Sub