2017-02-09 78 views
1

我有一个PivotTable,它的范围和数据总是变化我有如下数据:VBA透视表范围变化

Range("A3").Select 
Selection.CurrentRegion.Select 
DataArea = "Sheet21!R1C1:R" & Selection.Rows.Count & "C" & Selection.COLUMNS.Count 
ActiveSheet.PivotTables("PivotTable7").ChangePivotCache ActiveWorkbook. _ 
     PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataArea, _ 
     Version:=xlPivotTableVersion15) 

我得到一个错误

无法获取的数据透视表属性工作表类

回答

0

代码将修改“PivotTable7”中的“工作表Sheet1”的(修改到你有你的PivotTable您的工作表的名称),WI SourceData from Worksheets("Sheet21").Range("A3").CurrentRegion

Option Explicit 

Sub ChangePivotTableCache() 

Dim PvtTbl As PivotTable 
Dim DataArea As String 

' fully qualify your range by adding the worksheet object 
With Worksheets("Sheet21").Range("A3").CurrentRegion 
    DataArea = "Sheet21!R1C1:R" & .Rows.Count & "C" & .Columns.Count 
End With 

On Error Resume Next 
Set PvtTbl = Worksheets("Sheet1").PivotTables("PivotTable7") '<-- modify "Sheet1" to your sheet's name 

On Error GoTo 0 
If Not PvtTbl Is Nothing Then ' <-- If pivot table exist 
    PvtTbl.ChangePivotCache ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=DataArea) 
Else ' <-- If pivot table doesn't exist 
    MsgBox "Pivot Table doesn't exist in worksheet!" 
End If 

End Sub 

注意:获得SourceDataString你也可以使用:

DataArea = "Sheet21!" & Worksheets("Sheet21").Range("A3").CurrentRegion.Address(True, True, xlR1C1)