【问题标题】:Wait loop on two conditions using VBA使用 VBA 在两个条件下等待循环
【发布时间】:2015-09-20 07:16:48
【问题描述】:

如果不满足其中一个条件,我需要宏循环。使用一些基本的抓取。在开始收集数据之前,我需要循环直到准备好。

If ie.document.getElementsByClassName("clicks").Length < 1 Or ie.document.getElementsByClassName("feedback").Length < 1 Then
Do: Loop
End If

【问题讨论】:

  • 为什么不使用 Do while 循环?
  • 因为当我进入该页面时,会出现两个不同的报告。如果它包含数据,则为一个。如果没有的话。但它会在其他所有内容之后加载,所以我将不得不等待其中一个。
  • 我下面的回答有用吗?我认为给出的两个答案中的任何一个都可以做同样的事情。

标签: excel vba internet-explorer loops if-statement


【解决方案1】:

您的循环不会在每次迭代时检查一次,如果没有准备好,它将进入无限循环。您需要一个在每次循环迭代时检查的解决方案。

Do
    If ie.document.getElementsByClassName("clicks").Length < 1 Or ie.document.getElementsByClassName("feedback").Length < 1 Then
        DoEvents 'free the processor to work on other things
    Else
        Exit Do
    End If
Loop

这将在每次循环迭代时进行检查,而不仅仅是一次。

【讨论】:

    【解决方案2】:

    我觉得应该是这样的:

    Do While ie.document.getElementsByClassName("clicks").Length >= 1 And ie.document.getElementsByClassName("feedback").Length >= 1
     '''code
    Loop
    

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 2017-01-01
      • 1970-01-01
      • 2023-01-20
      • 2020-10-31
      • 2021-07-02
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多