在Excel 2013中创buildVBA中的数据透视表

我在VBA中编写了这个代码来创build一个数据透视表(从macros转换,实际上…),它不起作用

Dim wsTarget As Worksheet Dim rngSource As Range Dim pc As PivotCache Dim pt As PivotTable Dim field As PivotField Application.ScreenUpdating = False Set rngSource = Summary.Range("A1").CurrentRegion Set wsTarget = PivotTable wsTarget.Select For Each pt In wsTarget.PivotTables pt.Delete Next pt Set pc = ThisWorkbook.PivotCaches.Create(xlDatabase, rngSource, xlPivotTableVersion15) Set pt = pc.CreatePivotTable(wsTarget.Range("A3"), "PivotTable1", , xlPivotTableVersion15) Set field = wsTarget.PivotTables("PivotTable1").PivotFields("A") field.Orientation = xlColumnField field.Position = 1 field.LayoutBlankLine = True Set field = wsTarget.PivotTables("PivotTable1").PivotFields("B") field.Orientation = xlRowField field.Position = 1 Set field = wsTarget.PivotTables("PivotTable1").PivotFields("TOTAL") Set field = wsTarget.PivotTables("PivotTable1").AddDataField(field, "Sum of TOTAL", xlSum) field.NumberFormat = "_ $ * #,##0.00_ " Application.ScreenUpdating = True 

代码不断崩溃在“设置电脑”行,我不明白为什么…尝试谷歌search,所有的结果是相同的我的代码…重要的细节 – 我正在与Excel 2013年,也许是因为那个…会感谢我能得到的任何帮助 – 谢谢!

试试这个..我想你是直接引用表名称..

 Set rngSource = Sheets("Summary").Range("A1").CurrentRegion Set wsTarget = sheets("PivotTable") 

尝试这个:

 Dim lrow As Long Dim lcol As Long Dim rngSource As Range lrow = ActiveSheet.Cells(Application.Rows.Count, 1).End(xlUp).Row lcol = ActiveSheet.Cells(1, Application.Columns.Count).End(xlToLeft).Column Set rngSource = ActiveSheet.Cells(1, 1).Resize(lrow, lcol)