【问题标题】:Infinite loop with GotoGoto 无限循环
【发布时间】:2023-01-25 01:26:12
【问题描述】:

任何人都可以帮助我,我的这部分代码有错误。我正在使用硒 + VBA。

当一个元素出现在页面上时,我为它创建了一个 IF 来执行一些功能,并通过 goto 跳过几个项目转到代码的最后部分。如果此项不存在,它将继续运行代码直到结束。

事实证明,当元素因为这个跳跃而存在时,它会继续无限循环

坦克

Dim drive As New Selenium.ChromeDriver
Dim test123 As String



ABC = Sheets("Send").Range("A" & Rows.Count).End(xlUp).Row

Line = 4

Do Until Cells(Line, 1) = vbNullString

For Line = 4 to ABC

.......

test123 = drive.FindElementsByXPath("/html/body/div[1]/div/span[2]/div/span/div/div/div/div/div/div[1]").Count

If test123 > 0 Then

drive.Wait 1000

Cells(2,1).Value = "Not"

drive.FindElementByXPath("/html/body/div[1]/div/span[2]/div/span/div/div/div/div/div/div[2]/div/div/div/div").Click
drive.Wait 1000

GoTo EndCode


ElseIf drive.FindElementsByXPath("/html/body/div[1]/div/span[2]/div/span/div/div/div/div/div/div[1]").Count = 0 Then

 
Cells(2,2).Value = "Yes"


Else

End If



EndCode:


Next Line

Loop

drive.Quit
MsgBox "Send OK"


End Sub



【问题讨论】:

    标签: excel vba loops selenium-webdriver


    【解决方案1】:

    您永远不要将 Cells(Line, 1) 设置为与其初始值不同的任何值。

    所以你在这里开始你的循环,Line=4

    Do Until Cells(Line, 1) = vbNullString
    

    如果开始,这意味着 Cells(4, 1) 不等于 vbNullString

    然后在 For Line to ABC 循环中,你从 4 向上开始,在后续代码中设置值的单元格只有 Cells(2,1)Cells(2,2)

    即一旦开始,你永远不会改变Cells(4,1)的单元格值,因此你的Do until loop是无穷无尽的,因为Cells(4,1)永远不会改变......

    您可以通过在循环期间正确设置 Cells(4,1) 或将退出计数器与预设的迭代次数合并来避免这种情况。

    Dim drive As New Selenium.ChromeDriver
    Dim test123 As String
    
    
    ABC = Sheets("Send").Range("A" & Rows.Count).End(xlUp).Row
    
    Line = 4
    itt = 0
    
    Do Until (Cells(Line, 1) = vbNullString Or itt > 100)
    
        For Line = 4 To ABC
        
        'your code        
        
    EndCode:
    
        Next Line
        itt = itt + 1
    
    Loop
    
    drive.Quit
    MsgBox "Send OK"
    
    
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-25
      • 1970-01-01
      • 2013-09-05
      • 1970-01-01
      相关资源
      最近更新 更多