假如有一个很长的流程,其中要分析网页,我想让程序在 网页加载的过程中 停顿,类似那个 sleep,当WebBrowser加载结束后在继续程序还有set a=doc.all.tags("a")
set quote=a.item(10)我在两者中间加个2秒钟的延时才不会出错,否则就会出现quote没有被赋值的错误

解决方案 »

  1.   

    Private Declare Function GetTickCount Lib "kernel32" () As Long
    Private Sub Pause(ByVal sSec As Long)
              Dim StartSec     As Long
              StartSec = GetTickCount()
              While (GetTickCount() - StartSec) / 1000 < sSec
                  DoEvents
              Wend
      End Subpause(1)'暂停1秒
      

  2.   

    暂停的代码我会,我想知道的是如何判断webbrowser是否加载完毕,比如说WebBrowser花了3.7秒加载,像WebBrowser1_DownloadComplete,就是WebBrowser加载结束的执行代码,可是我只能使用
    Private Sub WebBrowser1_DownloadComplete()
    ……
    End Sub处理,但是如果我想Private Sub Deal()
    dim i as integer
    for i=1 to 10
    WebBrowser1.Navigate "http://localhost/index.asp?id=" & i*********主要就是这段不会写******************sleep until WebBrowser1_DownloadComplete*********主要就是这段不会写******************doc=WebBrowser1.Document
    ……
    next iEnd Sub
      

  3.   

    把事件放到WebBrowser1_DownloadComplete 里面
         public i=0   if wbr(简称).locationurl=yourUrl& i then      事件部分……       i=i+1
          if i>10 then
              wbr.navigate "about:blank"
              exit sub
          end if
           wbr.navigate yourUrl & i
       end if
      

  4.   

    第一个问题已经解决,现在主要是第二个问题set a=doc.all.tags("a") 
    set quote=a.item(10) 
    经常出现quote没有被赋值的错误
    而写成如下就不会出问题
    set a=doc.all.tags("a") 
    call DelayFun(2) '自定义的延迟两秒的函数
    set quote=a.item(10) 
      

  5.   

    3F的 WebBrowser1_DownloadComplete 正解不知道你的DelayFun是如何写的? 如果没整好则
    你一call DelayFun(2) 下一行的set quote=a.item(10) 会马上执行并不会等侯2秒Private Sub Command1_Click()
       Call DelayFun(2)
       MsgBox "ok"
    End SubSub DelayFun(Dtm&)
       Dim starttm&
       starttm = Timer
       Do
          DoEvents
       Loop Until Timer >= starttm + Dtm
    End Sub
      

  6.   

    楼上理解错了,我的意思是如果我加了call DelayFun(2)就不会出问题,放心,call DelayFun(2)肯定没有问题问题是如果不加这句的话就会出问题