VBA:创build数据透视表时出错

我正在创build一个VBAmacros。 除此之外,它使一个数据透视表:

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Sheets("Working").UsedRange).CreatePivotTable TableDestination:="", TableName:="HDPivotTable", DefaultVersion:=xlPivotTableVersion10 

这个工作,但是当我从Excel电子表格中删除所有数据,并用相同结构的新数据replace它时,我得到上面的错误:

运行时错误“13”:types不匹配

你能帮我吗?

谢谢。

编辑:

应用斯科特的build议后,我得到另一个错误:

 With Worksheets("Working") lRow = .Range("A" & .Rows.Count).End(xlUp).Row lColumn = .Range("A" & .Columns.Count).End(xlToLeft).Column ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=.Range(.Cells(1, 1), .Cells(lRow, lColumn))).CreatePivotTable TableDestination:="", TableName:="HDPivotTable", DefaultVersion:=xlPivotTableVersion10 End With ActiveSheet.Name = "HD Pivot" ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1) ActiveSheet.PivotTables("HDPivotTable").AddFields RowFields:="Location Code" 

错误是:运行时错误“1004”:数据透视表类的AddFields方法失败

最有可能是什么导致的错误是使用UsedRange 。 虽然是一个漂亮的工具,但它也有缺点,特别是因为你现在正在replace数据。

例如,如果新数据的列数较less,那么旧数据甚至更less的行, UsedRange将很可能反映旧数据的范围。 此外,根据您对工作表的处理方式,可能会有单元格包含格式化或其他字符,您无法用肉眼看到,这会影响UsedRange

如果您在代码中进行了以下调整,则应该每次都有效。

 Dim ws as Worksheet Set ws = Worksheets("Working") Dim lRow as Long, lColumn as Long 'assumes data table of contiguous rows/columns starting in A1 With ws lRow = .Range("A" & .Rows.Count).End(xlup).Row lColumn = .Cells(1, .Columns.Count).End(xltoLeft).Column End With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=ws.Range(ws.Cells(1,1),ws.Cells(lRow,lColumn)) ...