2017-02-09 4 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) 

Я получаю сообщение об ошибке

Невозможно получить свойство PivotTables класса Worksheet

ответ

0

код доработаем «PivotTable7» в «Лист1» (изменить с названием листа, где у вас есть свой PivotTable), Wi й SourceData от 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 

Примечание: чтобы получить String в SourceData вы также можете использовать:

DataArea = "Sheet21!" & Worksheets("Sheet21").Range("A3").CurrentRegion.Address(True, True, xlR1C1) 
Смежные вопросы