【问题标题】:Error in loop (On error Resume Next + if Err.Number > 0 then in VBA)循环错误(在错误继续下一步 + 如果 Err.Number > 0 然后在 VBA 中)
【发布时间】:2020-09-27 04:28:55
【问题描述】:

我使用 VBA + Excel 使用评论输入。 在这个循环中发生的错误是可以预料的,所以我把 On error Resume Next 放上去。 如果发生错误,整行将被涂成红色。

但是我发现代码有问题..如果发生错误,不仅有错误的行而且下一行没有自动被涂成红色。

bot.Wait 1000

lastRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row

For X = 2 To lastRow

    bot.Wait 1000
    
    
    bot.FindElementById("headerForm:awbSearchText", 3000).SendKeys Sheet1.Cells(X, 1)
    
    bot.Wait 1000
    
    bot.FindElementById("headerForm:searchBtnHidden", 3000).Click


'Update Activity

    bot.Wait 2500
    
    Dim eleAct As SelectElement
        Set eleAct = bot.FindElementById("headerForm:menuItems").AsSelect
        eleAct.SelectByText "Update Activity"
    
    bot.FindElementById("headerForm:goButton", 3000).Click
    

'Comment update & save

    bot.Wait 2500
    
    Dim eleAct2 As SelectElement
        Set eleAct2 = bot.FindElementById("tabview:tabform:updateActivitySubView:updateActivityPanel:updateActivity:updateTypeCode", 3000).AsSelect
        eleAct2.SelectByText "Other"
        
    bot.Wait 2500
    
    
    bot.FindElementByXPath("//textarea[@name='tabview:tabform:updateActivitySubView:updateActivityPanel:updateActivity:j_id_id84pc14']", 3000).SendKeys Sheet1.Cells(X, 2)
    
    bot.Wait 3000
    
    bot.FindElementById("tabview:tabform:updateActivitySubView:updateActivityPanel:updateActivity:save", 3000).Click
    
    bot.Wait 2000


    bot.FindElementByXPath("//*[@id='tabview:j_id_id62:0:tabName']").Click

    If Err.Number > 0 Then
    
    Sheet1.Cells(X, 1).EntireRow.Font.Color = vbRed
    
    End If
    
    bot.Wait 1500
Next 

【问题讨论】:

  • Err 在检查后需要重新设置,否则它将保持原样(除非出现新的),并且循环的其余部分将改变颜色。阅读Error Handling in VBA!如果您提供更多信息,了解哪些网站被抓取,您可能会得到更好的替代方案的建议。
  • Sheet1.Cells(X, 1).EntireRow.Font.Color = vbRed 这里例如。对于 X=2 并且发生错误,您为整个 X=2 行着色,因此显然这将为整个行着色。在Row X 中使用Sheet1.Cells(X, 1).Font.Color = vbRed' to color the column 1`。
  • 对不起,我有错字。不是列有问题,我是行。
  • 另外,为整行着色不是问题。问题是如果上一行有错误,则下一行没有错误会被着色...
  • 感谢您重置错误选项。我会在文章上查看并回复您!

标签: vba selenium selenium-webdriver


【解决方案1】:

错误数可以是负数也可以是正数。

使用

如果 Err.number 0 那么

【讨论】:

  • 感谢您的评论。但是问题变得更糟了..如果我按照您的建议进行了更改,但现在如果某一列发生错误,则以红色显示以红色,尽管以下列没有错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多