枢轴和运行时错误1004:应用程序定义或对象定义的错误

我很新的macros和VBA编码,我试图创build一个非常简单的macros,从33列的表中获取数据,并将其转换为一个枢轴。

只有最后3列(31,32,33)包含数字,我需要出现在关键点上,因为我想比较当前月份,上个月和月份的移动。

这是我的代码到目前为止:

Sub Macro6() ' ' Macro6 Macro ' ' Dim shtSrc As Worksheet, shtDest As Worksheet Dim pc As PivotCache Set shtSrc = ActiveSheet Set shtDest = shtSrc.Parent.Sheets.Add() shtDest.Name = shtSrc.Name & "-Pivot" Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _ SourceData:=shtSrc.Range("A1").CurrentRegion) pc.CreatePivotTable TableDestination:=shtDest.Range("A3"), _ TableName:="PivotTable1" With shtDest.PivotTables("PivotTable1") .InGridDropZones = True .RowAxisLayout xlTabularRow End With Set shtDest = ActiveSheet With ActiveSheet.PivotTables("PivotTable1").PivotFields("Name") .Orientation = xlRowField .Position = 1 End With ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields(31), "Last month", xlSum ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields(32), "This month", xlSum ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields(33), "Movement", xlSum End Sub 

我得到一个错误运行时错误1004:应用程序定义或对象定义的错误在这一行上:

 ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields(33), "Movement", xlSum 

如果我拿走这一行,macros工作正常,但只创build2列。 如果我放在行中,它会生成错误,不会创build第三列。

谁能解释为什么?

好。 我想我明白了,但是这很奇怪,这是一个错误吗?

原因是在我的源表中,列标题是“运动”。 如果我将标题更改为“列标题”以外的内容,例如说“MovementS”,那么macros就起作用。

  ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _ "PivotTable1").PivotFields(33), "Movements", xlSum 

另一种解释是刷新后,行标签可能已经从datefilter更改为标签filter。 特别是我从SQL查询中提取数据我需要将我的date范围数据types转换为date格式通过使用文本到列刷新后,然后我将刷新我的数据透视表。

检查您的行标签的下拉列表是否显示datefilter,而不是标签filter,以validation您的数据源是否具有正确的格式。