Private Sub Command1_Click() Dim o As Object Set o = openHtmlDoc("E:\Downloads\ASP.NET\1.htm")
'监视 openHtmlDoc("E:\Downloads\ASP.NET\1.htm") 其值与doc不等
' o 的值与 doc不等,不是所要得到的值
End SubPrivate Function openHtmlDoc(Url As String) As MSHTMLCtl.IHTMLDocument2
Dim h As New MSHTMLCtl.HTMLDocument Dim doc As MSHTMLCtl.IHTMLDocument2 Set doc = h.createDocumentFromUrl(Url, vbNullString)
'此处设置断点,doc的值改变了,为所要得到的值
Set openHtmlDoc = doc
'此处设置断点,有两个openHtmlDoc 一个为nothing,另一个等于doc
End Function
'监视 openHtmlDoc("E:\Downloads\ASP.NET\1.htm") 其值与doc不等
请问为什么Function openHtmlDoc 不能返回doc的值?
谢谢了!
'监视 openHtmlDoc("E:\Downloads\ASP.NET\1.htm") 其值与doc不等
' o 的值与 doc不等,不是所要得到的值
End SubPrivate Function openHtmlDoc(Url As String) As MSHTMLCtl.IHTMLDocument2
Dim h As New MSHTMLCtl.HTMLDocument Dim doc As MSHTMLCtl.IHTMLDocument2 Set doc = h.createDocumentFromUrl(Url, vbNullString)
'此处设置断点,doc的值改变了,为所要得到的值
Set openHtmlDoc = doc
'此处设置断点,有两个openHtmlDoc 一个为nothing,另一个等于doc
End Function
'监视 openHtmlDoc("E:\Downloads\ASP.NET\1.htm") 其值与doc不等
请问为什么Function openHtmlDoc 不能返回doc的值?
谢谢了!
o = openHtmlDoc("E:\Downloads\ASP.NET\1.htm")这样试试
把 Dim h As New MSHTMLCtl.HTMLDocument提升声明级别.
改为:
Dim o As MSHTMLCtl.IHTMLDocument2Function openHtmlDoc(Url As String)
改为:
Function openHtmlDoc(Url As String,h As MSHTMLCtl.IHTMLDocument2)
然后不用反回值,直接把值赋给h试试这样行吗?VB默认是按址传递参数的。相当于Function openHtmlDoc(Url As String,by ref h As MSHTMLCtl.IHTMLDocument2)