Excel宏运行时错误424

时间:2014-11-06 22:16:31

标签: excel vba

我无法找到运行时错误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

2 个答案:

答案 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

现在我们遇到了运行时错误:

no data for pivot table

需要更大才能显示完整的原因(感谢Microsoft!)但是我想它继续引用一个包含至少两行但在其顶行没有空白单元格的范围。在中断模式下,我转到新添加的工作表并创建了一个小的2x2数据表。回到IDE,按下F8并且虽然数据透视表没有定义任何行/列等,但它仍然有效。我没有尝试测试你的剩余代码,似乎创建了定义 - 我会把它留给你。