Vba 数据透视缓存创建运行时错误不匹配
我一直在尝试使用VBA创建一个Vba 数据透视缓存创建运行时错误不匹配,vba,excel,pivot-table,Vba,Excel,Pivot Table,我一直在尝试使用VBA创建一个pivottablee,但它在pivottache部分不断给我发送Pan错误消息 我在一个工作簿上有三个工作表,我打算使用工作表1中的表格在工作表3上创建数据透视表和图表。但我一直收到一条错误信息 以下是我的vba代码: Dim ws As Worksheet Dim pc As PivotCaches Dim pt As PivotTable Dim Rng As Range Dim wb As Workbook
pivottable
e,但它在pivottache
部分不断给我发送Pan错误消息
我在一个工作簿上有三个工作表,我打算使用工作表1中的表格在工作表3上创建数据透视表和图表。但我一直收到一条错误信息
以下是我的vba代码:
Dim ws As Worksheet
Dim pc As PivotCaches
Dim pt As PivotTable
Dim Rng As Range
Dim wb As Workbook
Set ws = Worksheets("Sheet3")
Set Rng = Worksheets("Sheet3").Range("A58")
Set pc = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:="Table1", Version:=xlPivotTableVersion14)
Set pt = pc.CreatePivotTable(TableDestination _
:=Range("A58"), TableName:="PivotTable5", DefaultVersion:= _
xlPivotTableVersion14)
ActiveWorkbook.ShowPivotTableFieldList = True
End Sub
透视表数据屏幕截图
尝试下面的代码,在代码注释中进行解释:
Option Explicit
Sub PivotTablefromTable()
Dim wb As Workbook
Dim ws As Worksheet
Dim PTbl As PivotTable
Dim PCache As PivotCache
Dim WorkTbl As ListObject
Dim PTblRng As Range
Dim Rng As Range
Set ws = Worksheets("Sheet3")
Set Rng = ws.Range("A58")
Set WorkTbl = Worksheets("work").ListObjects("Table1") ' <-- set a variable to the "Table1" in sheet "work"
Set PTblRng = WorkTbl.Range '<-- get the range from "Table1"
' set the Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PTblRng)
' Set the Pivot Table (already created in previous macro run)
On Error Resume Next
Set PTbl = ws.PivotTables("PivotTable5")
On Error GoTo 0
If PTbl Is Nothing Then ' <-- pivot table still doesn't exist >> need to create it
' create a new Pivot Table in ws sheet, start from Cell A58
Set PTbl = ws.PivotTables.Add(PivotCache:=PCache, TableDestination:=Rng, TableName:="PivotTable5")
' rest of your code here
Else ' just refresh the Pivot table, with updated Pivot Cache
PTbl.ChangePivotCache PCache
PTbl.RefreshTable
End If
ActiveWorkbook.ShowPivotTableFieldList = True
End Sub
选项显式
子数据透视表fromtable()
将wb设置为工作簿
将ws设置为工作表
作为数据透视表的Dim PTbl
Dim PCache作为数据透视缓存
作为ListObject的Dim WorkTbl
变暗PTblRng As范围
变暗Rng As范围
设置ws=工作表(“表3”)
设置Rng=ws.范围(“A58”)
Set WorkTbl=Worksheets(“work”)。ListObjects(“Table1”)”尝试下面的代码,在代码注释中进行解释:
Option Explicit
Sub PivotTablefromTable()
Dim wb As Workbook
Dim ws As Worksheet
Dim PTbl As PivotTable
Dim PCache As PivotCache
Dim WorkTbl As ListObject
Dim PTblRng As Range
Dim Rng As Range
Set ws = Worksheets("Sheet3")
Set Rng = ws.Range("A58")
Set WorkTbl = Worksheets("work").ListObjects("Table1") ' <-- set a variable to the "Table1" in sheet "work"
Set PTblRng = WorkTbl.Range '<-- get the range from "Table1"
' set the Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PTblRng)
' Set the Pivot Table (already created in previous macro run)
On Error Resume Next
Set PTbl = ws.PivotTables("PivotTable5")
On Error GoTo 0
If PTbl Is Nothing Then ' <-- pivot table still doesn't exist >> need to create it
' create a new Pivot Table in ws sheet, start from Cell A58
Set PTbl = ws.PivotTables.Add(PivotCache:=PCache, TableDestination:=Rng, TableName:="PivotTable5")
' rest of your code here
Else ' just refresh the Pivot table, with updated Pivot Cache
PTbl.ChangePivotCache PCache
PTbl.RefreshTable
End If
ActiveWorkbook.ShowPivotTableFieldList = True
End Sub
选项显式
子数据透视表fromtable()
将wb设置为工作簿
将ws设置为工作表
作为数据透视表的Dim PTbl
Dim PCache作为数据透视缓存
作为ListObject的Dim WorkTbl
变暗PTblRng As范围
变暗Rng As范围
设置ws=工作表(“表3”)
设置Rng=ws.范围(“A58”)
Set WorkTbl=工作表(“工作”)。ListObjects(“Table1”)是“Sheet1”中的“table”格式为table
,在VBA中的意思是ListObject
?或者你是说一个常规的范围?@Shai Rado,表1在表1中。我没有改名字。这只是表1。我还没有格式化。所以,我相信它处于默认状态。您还没有回答我关于什么是表1的问题,是表的名称吗?范围你能编辑你的帖子并添加你的数据截图吗?一个样本?@Shai Rado,我刚刚添加了一个数据截图。是的,我的桌子在第一页。这是一张桌子。谢谢您的“Sheet1”中的“table”格式为table
,这在VBA列表对象中是什么意思?或者你是说一个常规的范围?@Shai Rado,表1在表1中。我没有改名字。这只是表1。我还没有格式化。所以,我相信它处于默认状态。您还没有回答我关于什么是表1的问题,是表的名称吗?范围你能编辑你的帖子并添加你的数据截图吗?一个样本?@Shai Rado,我刚刚添加了一个数据截图。是的,我的桌子在第一页。这是一张桌子。谢谢