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的值?
谢谢了!

解决方案 »

  1.   

    Dim o As MSHTMLCtl.IHTMLDocument2
    o = openHtmlDoc("E:\Downloads\ASP.NET\1.htm")这样试试
      

  2.   

    h已经死了,doc 也不复存在
    把 Dim h As New MSHTMLCtl.HTMLDocument提升声明级别.
      

  3.   

    Dim o As Object
    改为:
    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)