在VBA中创建数据透视表时清空数据透视缓存 [英] Empty Pivot Cache when creating a pivot table in VBA

查看:6
本文介绍了在VBA中创建数据透视表时清空数据透视缓存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用https://excelchamps.com/blog/vba-to-create-pivot-table/中的代码在我正在编写的长宏中创建一个透视表。数据透视表最近停止工作;该子表运行时没有错误,但没有数据透视表的迹象。直到最近才完全发挥作用。在尝试进行故障排除时,我发现PCache变量为空,我假设这是所有东西都崩溃的地方。自此操作起作用以来,唯一更改的是我更改了数据透视表的数据区域中两列的单元格格式,但它们似乎并不相关,并且未用于透视表。

我还录制了自己的宏来尝试修复这个问题。手动创建数据透视表效果很好,但这不能解决我的问题。但是,由此录制的宏不起作用。我也尝试了来自多个不同站点的代码,并使用了非变量范围,但都不起作用。

Sub bpPivotTBL()
'https://excelchamps.com/blog/vba-to-create-pivot-table/
Dim PSheet As Worksheet
Dim DSheet As Worksheet
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range
Dim LastRow As Long
Dim LastCol As Long


'??Declare Variables
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("PIPE PIVOT").Delete
Sheets.Add Before:=Worksheets("INCOMING")
ActiveSheet.Name = "PIPE PIVOT"
Application.DisplayAlerts = True
Set PSheet = Worksheets("PIPE PIVOT")
Set DSheet = Worksheets("INCOMING")


LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)

'=================================================================
'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="PipePivot")
'==================================================================

'?Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable _
(TableDestination:=PSheet.Cells(1, 1), TableName:="PipePivot")


'Insert Row Fields
With ActiveSheet.PivotTables("PipePivot").PivotFields("CNCT")
.Orientation = xlRowField
.Position = 1
End With

推荐答案

您没有收到错误的原因是您包含了On Error语句,该语句屏蔽了所有错误。如果您注释掉或删除该行,您将在此处收到错误...

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange). _
    CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
    TableName:="PipePivot")
该指令首先创建数据透视表缓存,然后创建数据透视表,然后尝试将数据透视表分配给已声明为数据透视缓存的PCache。因此,您将得到一个错误。因此只创建数据透视表缓存,然后将其分配给PCach...

'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange)

这篇关于在VBA中创建数据透视表时清空数据透视缓存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆