我无法找到运行时错误424的根本原因。我知道它与丢失的对象有关,但我不确定哪个或哪个对象甚至可能在这个案例。我的假设与ActiveSheet有关,但我有点迷失。
Sub Macro1()
'
' Macro1 Macro
'
'
Sheets.Add
错误从此处开始
PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ActiveSheet.Range("A1").CurrentRegion.Select, Version:= _
xlPivotTableVersion12).CreatePivotTable TableDestination:="Sheet1!R3C1", _
TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion12
错误到此结束
Sheets("Sheet1").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Source Type")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Category")
.Orientation = xlRowField
.Position = 2
End With
ActiveSheet.PivotTables("PivotTable1").PivotFields("Category").Orientation = _
xlHidden
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Activity")
.Orientation = xlRowField
.Position = 2
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("USD Amount"), "Sum of USD Amount", xlSum
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("Quantity"), "Sum of Quantity", xlSum
End Sub
答案 0 :(得分:0)
记录的宏存在问题,根本没有定义对象。
我建议更换所有" Active"带变量的短语。这是开始:
Dim wb As Workbook
Set wb = ActiveWorkbook
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = wb.Sheets(1)
Set ws2 = wb.Sheets(2)
Dim Caches As PivotCache
Set Caches = wb.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ws2.Range("A1:C3"), Version:= _
xlPivotTableVersion12)
答案 1 :(得分:0)
我很少需要以编程方式创建数据透视表,以便了解正在发生的事情,我创建了一个小的子步骤:
Sub CreatePivotOnNewSheet() Sheets.Add ActiveSheet.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ ActiveSheet.Range("A1").CurrentRegion, Version:= _ xlPivotTableVersion12).CreatePivotTable TableDestination:="Sheet1!R3C1", _ TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion12 End Sub
这编译好但引发错误438:对象不支持此属性或方法。我在对象浏览器中搜索了 PivotCaches ,发现它是Workbook和PivotTable的成员。 它不是工作表的成员!当您考虑不同工作表上的数据透视表可以使用相同的数据透视缓存时,这是有道理的。
所以,改变代码:
Sub CreatePivotOnNewSheet()
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
ActiveSheet.Range("A1").CurrentRegion, Version:= _
xlPivotTableVersion12).CreatePivotTable TableDestination:="Sheet1!R3C1", _
TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion12
End Sub
现在我们遇到了运行时错误:
需要更大才能显示完整的原因(感谢Microsoft!)但是我想它继续引用一个包含至少两行但在其顶行没有空白单元格的范围。在中断模式下,我转到新添加的工作表并创建了一个小的2x2数据表。回到IDE,按下F8并且虽然数据透视表没有定义任何行/列等,但它仍然有效。我没有尝试测试你的剩余代码,似乎创建了定义 - 我会把它留给你。