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

标签 vba excel error-handling runtime-error

我编写了一个代码来从 VBA 中的 Google Patents 中抓取 Web 信息,该代码运行良好,但不幸的是它很容易出现两个错误。

最常见的两种是

  • 运行时错误
  • 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
    我基本上希望自动化我的错误处理,以便我可以在一夜之间运行代码并像婴儿一样 sleep :)

    最佳答案

    我认为 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
    

    关于vba - 如何在 VBA 中自动中断和重新启动代码执行?错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23906829/

    相关文章:

    vba - 使用输入框添加新工作表,检查现有工作表名称和无效工作表名称

    vba - 更快相当于 worksheetfunction.Clean

    vba - 如何动态更改公式内的范围?

    javascript - 为什么 JavaScript 库不更频繁地使用 try-catch block ?

    error-handling - 串行连接中断时 “During handling of the above exception, another exception occurred”的无限循环

    javascript - 如何重构我的 React 组件以接受一组错误,并在 error.show = true 对于其中任何一个错误时显示错误消息

    excel - VBA将光标向下移动到A列中有值的下一行?

    excel - 如何通过vba根据比率对excel中的行进行排序?

    html - VBA 从 span 类中提取值

    c# - 如何从 Excel 单元格中提取字符串?