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)) ...