如何在VBA中自动中断和重启代码执行?错误处理

时间:2014-05-28 08:47:09

标签: vba excel-vba error-handling runtime-error excel

我编写了一个代码,用于从VBA中的Google专利中获取网络信息,效果非常好,但不幸的是,它很容易出现两个错误。

最常见的两个是

  • 运行时错误
  • Windows OLE正在等待......

发生这种情况时需要发生的只是按OK,ctrl break,F5再次执行。另外,由于我不知道的原因,代码似乎在x分钟后减速,然后破坏并重新启动它会加快速度。

因此,作为补丁解决方案,我想做以下几点。在x分钟之后(或者说在40次迭代之后甚至更好),自动中断执行并重新开始。 第二种错误处理方式很棒,比如

If Range("A1".End(xlDown)) at time t = Range("A1".End(xlDown)) at time t + 600 Then restart code execution Else continue code execution

我基本上希望自动化我的错误处理,以便我可以在一夜之间运行代码并像婴儿一样睡觉:)

1 个答案:

答案 0 :(得分:1)

我认为Excel VBA中没有代码语句允许您以编程方式中断代码然后继续。但是,您可以使用VBA模拟按下Break按钮,但我不知道如何让代码按下Continue按钮,因为代码已经暂停...

Application.VBE.CommandBars.FindControl(ID:=189).Execute 'press Break button
DoEvents

下面应按继续按钮,但我无法让它工作 - 也许有人知道怎么做?

Application.VBE.CommandBars.FindControl(ID:=186)

或者,您可以尝试让您的例程进入休眠状态,等待IE响应,在这种情况下,您需要公开一些Windows API,如下所示。

在模块代码中,在最顶层,您需要放置Declare语句。

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

然后你可以在任何地方使用Sleep():

Sub Test()
    Debug.Print "I will now sleep for 1000 milliseconds...."
    Sleep(1000)
    Debug.Print "I am now awake."
End Sub