2016-11-15 110 views
1

我刚刚完成了一个大型的VBA代码,基本上是在一些内部网页上使用一些奇怪的属性(有关更多详细信息,请参阅我的previous post)。 (F8)它的工作原理,但如果我尝试运行整个事情,我会得到一个对象变量或与块变量未设置错误。如果我尝试运行整个事情,我得到一个对象变量或块变量未设置错误。运行VBA代码问题

问题是这个错误并不总是在代码的相同位置弹出。

我试过到目前为止做:

  1. 每次我点击网页的元素,选择一个新的窗口或其他任何动作,我等了页面的HTMLDocument和页面本身是在就绪状态:Do: Loop Until doc.readyState = "complete"

    Sub WaitWhileBusy(ie As SHDocVw.InternetExplorer) 
        While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE 
         DoEvents 
        Wend 
    End Sub 
    

所以我只是把一些那些“检查点”在这里,有整个代码,但它并没有在所有影响这一问题。

  1. 我现在有一个解决方案,但我不喜欢的是将整个代码放在一个循环中,而出现错误时只会在结束时退出代码已达成....

有关如何处理此问题的任何想法?

回答

0

好的,我发现了一个很好的方法来解决这个问题。

我仍然不完全明白为什么会出现错误,但我想这与进程的速度有关,所以我做的是我添加了一个Timers子代码,它基本上具有每次暂停代码的效果调用它并计算我想要的秒数。

的代码(我从字面上here复制粘贴)如下:

子定时器() 昏暗PauseTime,开始,完成,TOTALTIME PauseTime = 1'设置持续时间。 Start = Timer'设置开始时间。 Do While Timer < Start + PauseTime DoEvents'对其他进程的收益。 Loop End Sub

我的问题消失了!