Excel VBA中的应用程序定义或对象定义的错误

我得到在Excel中使用VBA下面的代码错误:

Private Sub XMLGen(mapRangeA, mapRangeB, ticketSize, mapping) Dim fieldOneArr As Variant Dim fieldTwoArr As Variant Dim row As Long Dim column As Long Dim infoCol As Long Dim endInfo As Long Dim objDom As DOMDocument Dim objNode As IXMLDOMNode Dim objXMLRootelement As IXMLDOMElement Dim objXMLelement As IXMLDOMElement Dim objXMLattr As IXMLDOMAttribute Set ws = Worksheets("StockData") Dim wsName As String Set objDom = New DOMDocument If ticketSize = 8 Then wsName = "A7Tickets" ElseIf ticketSize = 16 Then wsName = "A8Tickets" Else wsName = "A5Tickets" End If Set ps = Worksheets(wsName) 'create processing instruction Set objNode = objDom.createProcessingInstruction("xml", "version='1.0' encoding='UTF-8'") objDom.appendChild objNode 'create root element Set objXMLRootelement = objDom.createElement("fields") objDom.appendChild objXMLRootelement 'create Attribute to the Field Element and set value Set objXMLattr = objDom.createAttribute("xmlns:xfdf") objXMLattr.NodeValue = "http://ns.adobe.com/xfdf-transition/" objXMLRootelement.setAttributeNode objXMLattr infoCol = 1 fieldOneArr = Worksheets(mapping).range(mapRangeA) fieldTwoArr = Worksheets(mapping).range(mapRangeB) For row = 1 To UBound(fieldOneArr, 1) For column = 1 To UBound(fieldOneArr, 2) 'create Heading element Set objXMLelement = objDom.createElement(fieldOneArr(row, column)) objXMLRootelement.appendChild objXMLelement 'create Attribute to the Heading Element and set value Set objXMLattr = objDom.createAttribute("xfdf:original") objXMLattr.NodeValue = (fieldTwoArr(row, column)) objXMLelement.setAttributeNode objXMLattr objXMLelement.Text = ps.Cells(row, infoCol) infoCol = infoCol + 1 endInfo = endInfo + 1 If endInfo = 4 Then infoCol = 1 End If Next column Next row 'save XML data to a file If ticketSize = 2 Then objDom.Save ("C:\ExportTestA5.xml") MsgBox "A5 XML created" ElseIf ticketSize = 8 Then objDom.Save ("C:\ExportTestA7.xml") MsgBox "A7 XML created" Else objDom.Save ("C:\ExportTestA8.xml") MsgBox "A8 XML created" End If End Sub 

当我点击debugging时,它指向这一行:

 fieldOneArr = Worksheets(mapping).range(mapRangeA) 

我知道。范围应该是大写的,但是每当我改正的时候它都会自动将它设置为小写。

此代码旨在创build一个XML文件,然后将所选工作表(基于ticketSizevariables)的详细信息写入正确的XML字段。 因此,我有一个映射工作表,从中写入字段和属性名称,然后将信息从正确的票据大小工作表写入到元素的文本属性中。

你应该定义你的函数参数的types,在这个例子中是mapRangeA As String 。 Office对象方法和属性通常对于错误消息不是很有帮助,所以如果你有一个参数有问题,最好有一个types不匹配的错误。