我正在尝试使用VBA代码创建数据透视表。但它总是显示运行时错误'5'
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim StartPvt As String
Dim SrcData As String
SrcData = "Sheet1!" & Range("B2:M4").Address(ReferenceStyle:=xlA1)
StartPvt = "Sheet2!" & Range("A3").Address(ReferenceStyle:=xlA1)
Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=SrcData)
Set pvt = pvtCache.CreatePivotTable(StartPvt, "PivotTable1")
这段代码出了什么问题?
答案 0 :(得分:0)
下面的代码Set pvt
以防它已经创建(来自之前的代码运行),并且仅使用更新的PivotCache
更新数据透视表。
如果“Sheet2”中尚不存在“PivotTable1”,则在“Sheet2”中创建它。
<强>代码强>
Option Explicit
Sub Pivot()
Dim PvtSht As Worksheet
Dim DataSht As Worksheet
Dim pvtCache As PivotCache
Dim pvt As PivotTable
Dim StartPvt As String
Dim SrcData As String
Set DataSht = Worksheets("Sheet1")
Set PvtSht = Worksheets("Sheet2")
SrcData = "Sheet1!" & DataSht.Range("B2:M4").Address(ReferenceStyle:=xlA1)
' Set the Pivot Cache
Set pvtCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=SrcData)
' add this line in case the Pivot table doesn't exit >> first time running this Macro
On Error Resume Next
Set pvt = PvtSht.PivotTables("PivotTable1") ' check if "PivotTable1" Pivot Table already created (in past runs of this Macro)
On Error GoTo 0
If pvt Is Nothing Then
' create a new "PivotTable1" in "Sheet2" sheet
Set pvt = PvtSht.PivotTables.Add(PivotCache:=pvtCache, TableDestination:=PvtSht.Range("A3"), TableName:="PivotTable1")
Else
' just refresh the Pivot cache with the updated Range
pvt.ChangePivotCache pvtCache
pvt.RefreshTable
End If
End Sub