繁体   English   中英

Excel宏运行时错误424

[英]Excel macro runtime error 424

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

录制的宏的问题在于,根本没有定义对象。

我建议用变量替换所有“活动”短语。 这是开始:

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)

我很少需要以编程方式创建数据透视表,因此,为了了解正在发生的事情,我创建了一个小步骤来逐步进行:

 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键,尽管枢轴表没有定义任何行/列等,但它仍然有效。 我没有尝试测试似乎可以创建定义的其余代码-我将留给您。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM