Excel VBA – 陷入从variables数据范围生成数据透视表

我有下面的代码,理论上应该使用它在“数据”表中find的数据在第二个表(存在)上创build一个数据透视表。 但是,只要到达创build数据透视表的部分,它就会一直崩溃。

我原来是从一个固定的大小,然后改变它,所以它应该采取我的“数据”表上的所有数据,无论是一个2×3或58×13表

Sheets("DATA").Select Range("H1").Select ActiveCell.FormulaR1C1 = "l" Range("A1").Select ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ Sheets("DATA").Range("A1").CurrentRegion, _ Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="Prior. per user!R1C1", TableName:="PivotTable1", _ DefaultVersion:=xlPivotTableVersion14 Sheets("Prior. per user").Select Cells(1, 1).Select With ActiveSheet.PivotTables("PivotTable1").PivotFields("Priority") .Orientation = xlColumnField .Position = 1 End With With ActiveSheet.PivotTables("PivotTable1").PivotFields("Caller") .Orientation = xlRowField .Position = 1 End With Range("D2").Select ActiveSheet.PivotTables("PivotTable1").PivotFields("Priority").PivotItems( _ "Medium").Position = 2 Columns("D:D").ColumnWidth = 7.43 Columns("C:C").ColumnWidth = 10 ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields("Number"), "Sum of Number", xlSum With ActiveSheet.PivotTables("PivotTable1").PivotFields("Sum of Number") .Caption = "Count of Number" .Function = xlCount End With 

如果有人看到它有什么问题,将不胜感激。

您的目标工作表名称中包含空格,因此您需要用单引号括起来:

 ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ Sheets("DATA").Range("A1").CurrentRegion, _ Version:=xlPivotTableVersion14).CreatePivotTable _ TableDestination:="'Prior. per user'!R1C1", TableName:="PivotTable1", _ DefaultVersion:=xlPivotTableVersion14 

就我个人而言,我也会使用一个variables来引用数据透视表:

 Dim PT As PivotTable Set PT = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ Sheets("DATA").Range("A1").CurrentRegion, _ Version:=xlPivotTableVersion14).CreatePivotTable(TableDestination:="'Prior. per user'!R1C1", TableName:="PivotTable1", _ DefaultVersion:=xlPivotTableVersion14) With PT With .PivotFields("Priority") .Orientation = xlColumnField .Position = 1 End With With .PivotFields("Caller") .Orientation = xlRowField .Position = 1 End With .PivotFields("Priority").PivotItems("Medium").Position = 2 .Parent.Columns("D:D").ColumnWidth = 7.43 .Parent.Columns("C:C").ColumnWidth = 10 .AddDataField .PivotFields("Number"), "Count of Number", xlCount End With