我目前正在用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的新手,请原谅我的无知。
答案 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,我不确定您的实际代码是什么。