我尝试根据数据的一致位置创建一个宏来创建数据透视表。但是,我正努力克服这一初步挑战。我一直在关注创建数据透视表宏的指南,但错误438始终结束宏。代码看起来应该可行,但我无法弄清楚它为什么没有。
Sub StockAdjustmentPivot()
Dim myFirstRow As Long
Dim myLastRow As Long
Dim myFirstColumn As Long
Dim myLastColumn As Long
Set sht = ActiveSheet
Dim mySourceData As String
Dim myDestinationRange As String
Dim myPivotTable As PivotTable
myDestinationRange = sht.Range("T5").Address(ReferenceStyle:=xlR1C1)
myFirstRow = 1
myLastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
myFirstColumn = 1
myLastColumn = 11
With sht.Cells
mySourceData = .Range(.Cells(myFirstRow, myFirstColumn), .Cells(myLastRow, myLastColumn)).Address(ReferenceStyle:=xlR1C1)
End With
Set myPivotTable = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="STOCK ADJUSTMENTS REPORT!" & mySourceData).CreatePivotTables(TableDestination:="STOCK ADJUSTMENTS REPORT!" & myDestinationRange, DefaultVersion:="PivotTable1")
End Sub
出现错误的行如下:
Set myPivotTable = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="STOCK ADJUSTMENTS REPORT!" & mySourceData).CreatePivotTables(TableDestination:="STOCK ADJUSTMENTS REPORT!" & myDestinationRange, DefaultVersion:="PivotTable1")
我在继续详细说明数据透视表之前尝试解决此问题。
感谢。
修改
根据指导原则,我已将代码拆分为更易于管理的大小:
Dim cache As PivotCache
Set cache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="STOCK ADJUSTMENTS REPORT!" & mySourceData)
Set myPivotTable = cache.CreatePivotTable(TableDestination = "STOCK ADJUSTMENTS REPORT!" & myDestinationRange, TableName:="PivotTable1")
但是,我不认为正在定义缓存变量。运行此操作会出现以下错误: 运行时错误5:无效的过程调用或参数。
答案 0 :(得分:1)
TL; DR:你有一个错字。将WHERE filmat.cmimi > 400
更改为CreatePivotTables
。
你只有一条指令可以做很多事情:
CreatePivotTable
正在访问Set myPivotTable = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="STOCK ADJUSTMENTS REPORT!" & mySourceData).CreatePivotTables(TableDestination:="STOCK ADJUSTMENTS REPORT!" & myDestinationRange, DefaultVersion:="PivotTable1")
的数据透视缓存集合,使用它来创建新的数据透视缓存,并使用它来创建数据透视表。
Excel ActiveWorkbook
没有PivotCache
成员 - 因此,对象不支持此属性或方法。
将其拆分,并使用正确声明的变量。
CreatePivotTables
如果可以,那么您可以使用它来创建数据透视表 - 如果不工作,至少现在您知道哪个部分失败了(您对单个指令的填充越多) ,指令变得越难调试):
Dim cache As PivotCache
Set cache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="STOCK ADJUSTMENTS REPORT!" & mySourceData)
注意在Dim pivot As PivotTable
Set pivot = cache.CreatePivotTable(TableDestination:="STOCK ADJUSTMENTS REPORT!" & myDestinationRange, DefaultVersion:="PivotTable1")
之后输入.
点时VBE为您提供的就地下拉(“IntelliSense”):听取编辑告诉您的内容将避免这种情况错字。