枢轴和运行时错误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您的数据源是否具有正确的格式。