我在下面的代码的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有人能帮我调试这个问题吗?
发布于 2020-05-14 19:25:59
从(myNode)中删除括号
xNamedNodeMap.setNamedItem myNode在调用方法时,不应使用括号,除非该方法返回值(并且希望将返回值赋给某物)。否则,()将导致VBA计算包含的参数,并传递该评估的结果,而不是(例如) myNode。
当您传递的参数被计算时会发生什么,这取决于它是什么类型的变量,如果它是一个对象,那么该对象是否有default method/property。
没有默认方法/属性的对象将引发运行时错误,正如您在代码中看到的那样。
Note --当您使用Call时,情况不同,但是这里的一般建议是不要使用Call.
https://stackoverflow.com/questions/61805563
复制相似问题