我编写了一个代码来从 VBA 中的 Google Patents 中抓取 Web 信息,该代码运行良好,但不幸的是它很容易出现两个错误。
最常见的两种是
发生这种情况时,只需按下 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/