2017-04-07 88 views
0

随着VBA的帮助下,我能够创建数据透视表后不会刷新。但是,当新线表中添加,我刷新数据透视表与wksSource1.PivotTables(1).RefreshTable,它没有更新数据透视表。VBA支点增加新的生产线

Dim PCache As PivotCache 
Dim PTable As PivotTable 
Dim PRange As Range 
Dim lastrowv As Long 
Dim lastcolv As Long 

lastrowv = wksSource.Cells(Rows.Count, 3).End(xlUp).Row 
lastcolv = wksSource.Cells(5, Columns.Count).End(xlToLeft).Column 
Set PRange = wksSource.Cells(5, 1).Resize(lastrowv - 4, lastcolv) 

    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _ 
     PRange, Version:=xlPivotTableVersion14).CreatePivotTable _ 
     TableDestination:=wksSource1.Cells(1, 1), TableName:="PivotTable14", _ 
     DefaultVersion:=xlPivotTableVersion14 
    wksSource1.Select 
    Cells(1, 1).Select 
    With ActiveSheet.PivotTables("PivotTable14").PivotFields("Term - Phases") 
     .Orientation = xlRowField 
     .Position = 1 
    End With 
    With ActiveSheet.PivotTables("PivotTable14").PivotFields("Status") 
     .Orientation = xlColumnField 
     .Position = 1 
    End With 

    ActiveSheet.PivotTables("PivotTable14").AddDataField ActiveSheet.PivotTables(_ 
     "PivotTable14").PivotFields("Steps/ Activities"), "Count of Steps/ Activities" _ 
     , xlCount 
+2

请花时间和给予反馈和信贷(通过标记为“答案”)以前的帖子你在这儿,你已经张贴** 7倍**这里,向所有你得到的答案,从不记任何一位。因此,首先要花时间给予适当的反馈! –

回答

-1

wksSource1.PivotTables(1)如果所述枢轴缓存源数据是动态的,即,如果源数据是一个excel表数据或一个动态命名区域.RefreshTable才有效。

但是,当要创建透视表中,源数据范围是固定的,并且取决于范围PRANGE。

所以,当你的源数据表中添加新数据,枢轴缓存仍是指不复位莫名其妙的普兰奇。

如果你是在一个子程序刷新数据透视表,你需要自行更新刷新数据透视表的现有支点缓存,一旦枢轴缓存更新,数据透视表也将被更新。

尝试下面的代码,并调整它根据自己的需要。

Sub RefreshPivotTable() 
Dim wksSource As Worksheet, wksSource1 As Worksheet 
Dim PRange As Range 
Dim lastrowv As Long, lastcolv As Long 

Set wksSource = Sheets("Sheet4")   'Sheet which contains the source data for pivot table 

Set wksSource1 = Sheets("Sheet3") 'Sheet which contains Pivot table 

lastrowv = wksSource.Cells(Rows.Count, 3).End(xlUp).Row 
lastcolv = wksSource.Cells(5, Columns.Count).End(xlToLeft).Column 
Set PRange = wksSource.Range("C5:F12") 

wksSource1.PivotTables(1).ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange) 

End Sub