我越来越 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
谁能帮我调试一下这个问题?
去掉括号 (myNode)
xNamedNodeMap.setNamedItem myNode
当调用一个方法时,你不应该使用括号,除非该方法返回一个值(并且你希望将返回值分配给某个东西)。 否则, ()
导致VBA 评价 的参数,并将该评价的结果传递进来,而不是(例如) myNode
当你传递的参数被评估时,会发生什么,取决于它是什么类型的变量,如果它是一个对象,该对象是否有一个 default method/property
.
没有默认方法属性的对象将引发运行时错误,就像你在代码中看到的那样。
注意 - 物是人非 Call
但一般的建议是不要使用 Call
...