需要以下错误的帮助:“无效的下一个控制变量参考”

时间:2019-05-23 18:31:50

标签: excel vba

我目前正在用VBA编写代码,该代码将从Oddschecker中提取信息。在检查了相关站点之后,我可以看到以下内容:

<table class = "eventTable"....>

    <tbody id ="t1"....>

         <tr data-bname="Competitor A", data-hcap-sort="1"

我正在尝试捕获竞争对手A的名称及其排名(在data-hcap-sort下显示)。

但是,我遇到以下错误消息:

运行时错误13.键入不匹配

我不确定我是否使用了错误的标签/变量,或者我是否忽略了一些基本内容。

Option Explicit

Sub ProcessHTMLPage(HTMLPage As MSHTML.HTMLDocument)

    Dim HTMLTable As MSHTML.IHTMLElement
    Dim HTMLTables As MSHTML.IHTMLElementCollection
    Dim HTMLRow As MSHTML.IHTMLElement
    Dim HTMLHCap As MSHTML.IHTMLElement

    Set HTMLTables = HTMLPage.getElementById("t1")

    For Each HTMLTable In HTMLTables
        Debug.Print HTMLTables

    For Each HTMLRow In HTMLTables.getElementsByTagName("data-bname")
        Debug.Print HTMLRow.innerText
    Next HTMLRow

    For Each HTMLHCap In HTMLTables.getElementsByTagName("data-hcap-sort")
        Debug.Print HTMLHCap.innerText
    Next HTMLHCap

 End Sub

在此先感谢您的帮助。 VBA的新手,请原谅我的无知。

1 个答案:

答案 0 :(得分:0)

在此示例中,“下一个控制变量”为foo

For Each foo In bar
Next foo

Next之后指定标识符(可选)时,它必须与循环控制变量的标识符完全匹配。

For Each foo In Bar
Next zoo '<~ illegal

只需将它们全部删除:

For Each foo In Bar
Next

关于类型不匹配错误,我怀疑是这一行:

Debug.Print HTMLTables

尝试打印/输出数组会像您得到的那样抛出 type mismatch 错误13。看起来您的意思是:

Debug.Print HTMLTable

...尽管,看着您帖子的edit history,我不确定您的实际代码是什么。