【发布时间】: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 thecolumn 1`。 -
对不起,我有错字。不是列有问题,我是行。
-
另外,为整行着色不是问题。问题是如果上一行有错误,则下一行没有错误会被着色...
-
感谢您重置错误选项。我会在文章上查看并回复您!
标签: vba selenium selenium-webdriver