我对宏和 VBA 编码很陌生,我正在尝试创建一个非常简单的宏,它从包含 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
如果我去掉这条线,宏工作正常,但只创建 2 列。如果我输入该行,它会生成错误并且不会创建第三列。
谁能解释为什么?