0

我进入Run-time error 438: Object Doesnot support this propoerty or method以下xNamedNodeMap.setNamedItem (myNode)代码行:

Sub appendChild()
    Dim xDoc As MSXML2.DOMDocument60
        Set xDoc = New MSXML2.DOMDocument60
        xDoc.LoadXML ("<root><child/></root>")
    Dim myNode As MSXML2.IXMLDOMNode
       Set myNode = xDoc.createNode(2, "Sci-Fi", "")
    Dim xNamedNodeMap As MSXML2.IXMLDOMNamedNodeMap
    Set xNamedNodeMap = xDoc.DocumentElement.ChildNodes.Item(0).Attributes
    xNamedNodeMap.setNamedItem (myNode)
    Debug.Print xDoc.XML
End Sub

有人可以帮我调试问题吗?

4

1 回答 1

2

去掉括号(myNode)

xNamedNodeMap.setNamedItem myNode

调用方法时不应使用括号,除非该方法返回一个值(并且您希望将返回值分配给某物)。否则,()导致 VBA评估包含的参数,并传递该评估的结果而不是(例如)myNode

评估您传递的参数时会发生什么取决于它是什么类型的变量,以及它是否是一个对象,该对象是否具有default method/property.

正如您在代码中看到的那样,没有默认方法/属性的对象将引发运行时错误。

注意- 当您使用时情况有所不同,Call但这里的一般建议是不要使用Call...

于 2020-05-14T19:25:59.473 回答