无法从VBA函数返回值

chr*_*ode 3 excel vba ms-office excel-vba

我正在尝试从代码中返回一个值.只显示代码要容易得多:

Function writeHeaderData() As IXMLDOMNode

    Dim xmlDoc As New MSXML2.DOMDocument30
    xmlDoc.async = False
    xmlDoc.LoadXML "<Foo></Foo>"
    Dim Foo As IXMLDOMNode
    Set Foo = xmlDoc.DocumentElement

    'code snip; includes appending lots of things to Foo

    'the error is on this line:
    writeHeaderData = Foo
    Exit Function

End Function
Run Code Online (Sandbox Code Playgroud)

我已经谷歌搜索了,但它无济于事.这个函数是从主子程序调用的,我试图将返回的IXMLDOMNode追加到一个更大的函数中,但我不断收到"Object variable or With block variable not set"错误" writeHeaderData = Foo.这里有什么问题?

Aak*_*shM 7

在VB(A)中,当你想要分配一个对象变量,包括赋值函数的返回值时,你需要使用Set,所以:

'the error is on this line:
writeHeaderData = Foo
Run Code Online (Sandbox Code Playgroud)

应该

Set writeHeaderData = Foo
Run Code Online (Sandbox Code Playgroud)

  • 即使使用Set语句,您也会得到Type Mismatch.您的函数返回XMLDoc,但Foo是XMLDOMNode. (3认同)