Html VBA On错误转到不工作

Html VBA On错误转到不工作,html,vba,excel,web-scraping,Html,Vba,Excel,Web Scraping,我正在查看一个特定的div标记,如果没有innerText,我想跳过它并转到NextLink3。但是,我认为当没有innerText时,我只会得到一个运行时错误:在test=arr(LBound(arr))处下标超出范围,我不确定如何处理。我认为“On Error GoTo”将查看下一行是否产生错误,如果产生错误,则转到其他地方,但我下面的代码没有这样做,我仍然得到下标错误 HTML代码: <div style="width: 555px; -ms-overflow-x: auto; -m

我正在查看一个特定的div标记,如果没有innerText,我想跳过它并转到NextLink3。但是,我认为当没有innerText时,我只会得到一个运行时错误:在
test=arr(LBound(arr))
处下标超出范围,我不确定如何处理。我认为“On Error GoTo”将查看下一行是否产生错误,如果产生错误,则转到其他地方,但我下面的代码没有这样做,我仍然得到下标错误

HTML代码:

<div style="width: 555px; -ms-overflow-x: auto; -ms-overflow-y: hidden;">
 <a href="/kegg-bin/ddi_list?drug=D00550">
  <img name="DDI" align="middle" onmouseover="btn(this,'DDIbh')" onmouseout="btn(this,'DDIb')" onmousedown="btn(this,'DDIbd')" onmouseup="btn(this,'DDIb')" ontouchstart="btn(this,'DDIbd')" ontouchend="btn(this,'DDIb')" alt="Drug interaction" src="/Fig/bget/button_DDIb.gif" border="0">
 </a>
</div>

在尝试使用
Len()
函数拆分html元素之前,只需检查以确保该元素具有值

例如,如果存在的
NextLink3
只是为了处理我们现在避免的错误,我无法确定哪些其他代码不再是必需的

Dim ele As Object, test As String
Set ele = HTML.querySelectorAll(".td50 div")(3)

If Not ele Is Nothing Then

    If Len(ele.innerText) > 0 Then

        On Error GoTo NextLink3
        arr = Split(ele.innerText, Chr$(10))
        On Error GoTo NextLink3        'probably not necessary unless you call ... Goto 0 in NextLink3
        test = arr(LBound(arr))

        If InStr(arr(LBound(arr)), "[HSA") = 0 Or InStr(arr(LBound(arr)), " [KO") = 0 Then GoTo NextLink3

        For i = LBound(arr) To UBound(arr)
            Debug.Print Split(arr(i), "[")(0)
        Next i

        GoTo NextLink

    End If

End If

您不需要继续重复发生错误时的操作。你能分享这个失败的完整链接吗?上面的代码。@QHarr无论我放在哪里/多少,它都不会跳过test=arr(LBound(arr))时的运行时错误是的-但在这个特殊情况下,我想转到NextLink3,因为我在这个div标记中搜索,没有找到任何innerTextItinnerText@QHarr他们无论如何都不需要重复,因为它是在GoTo的初始声明之后设置的。所以其中一个可以作为最低限度的解决方案。
Dim ele As Object, test As String
Set ele = HTML.querySelectorAll(".td50 div")(3)

If Not ele Is Nothing Then

    If Len(ele.innerText) > 0 Then

        On Error GoTo NextLink3
        arr = Split(ele.innerText, Chr$(10))
        On Error GoTo NextLink3        'probably not necessary unless you call ... Goto 0 in NextLink3
        test = arr(LBound(arr))

        If InStr(arr(LBound(arr)), "[HSA") = 0 Or InStr(arr(LBound(arr)), " [KO") = 0 Then GoTo NextLink3

        For i = LBound(arr) To UBound(arr)
            Debug.Print Split(arr(i), "[")(0)
        Next i

        GoTo NextLink

    End If

End If