我在Excel-vba中使用声明为Object
的变量发现了一个意外的(至少对我来说)行为。
我试图从html页面中提取一些数据,因此我使用了这样的例程:
sub Test
Dim htmlPage As htmlDocument
'This is the interesting variable
Dim DataTable As Object
Dim DataCollection As Object
'Code to get the html page
Set DataTable = htmlPage.getElementById("a name")
Set DataCollection = DataTable.getElementsByClassName("another name")
' Code to use DataCollection
end Sub
如果我尝试在Set DataCollection = DataTable.getElementsByClassName("another name")
行上运行此代码,我会收到错误
运行时错误''
对象不支持此属性或方法
在第一个Set
命令后,DataTable
变量已变为Object/HTMLDivElement
类型,因此原则上它应该具有方法getElementsByClassName
。
我不明白的是,如果我从头开始将变量声明为HTMLDivElement
(不更改cose中的任何其他内容),例如:
Dim DataTable As HTMLDivElement
上面的代码运行正常,没有错误。在这种情况下,DataTable
变量的类型为HTMLDivElement/HTMLDivElement
。
将变量声明为通用Object
与从一开始指定其类型有什么区别?为什么第一个版本的代码不起作用?