Excel VBA:声明通用对象与指定对象类型之间的区别

时间:2015-11-12 17:01:35

标签: vba excel-vba excel

我在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与从一开始指定其类型有什么区别?为什么第一个版本的代码不起作用?

0 个答案:

没有答案