Как я могу создать динамический диапазон для сводной таблицы? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь написать макрос, который создает сводную таблицу на новом листе на основе данных из основной электронной таблицы.Как я могу настроить свой код для этого?

Я получил код для работы со статическими данными, но всякий раз, когда данные являются динамическими, макрос не работает.Я считаю, что проблема в первой строке, начинающейся с "srcData =".Строка ниже, которая закомментирована, работает без проблем.

Option Explicit

Dim pivotSht As Worksheet
Dim dataSht As Worksheet
Dim pCache As PivotCache
Dim pTable As PivotTable
Dim srcData As String
Dim pRange As Range
Dim lastR As Long
Dim lastC As Long

Public Sub buildPivot()

Set dataSht = Worksheets("OOB")

'Defines data range in "OOB" sheet
With dataSht
    lastR = .Cells(.Rows.Count, "D").End(xlUp).Row
    lastC = .Cells(4, .Columns.Count).End(xlToLeft).Column
    Set pRange = .Range(.Cells(1, "D1"), Cells(lastR, lastC))
End With

Sheets("OOB").Activate
srcData = ActiveSheet.Name & "!" & pRange.Address(ReferenceStyle:=xlR1C1)
'srcData = ActiveSheet.Name & "!" & Range("D1:U714").Address(ReferenceStyle:=xlR1C1)

'Delete old "PivotTable" worksheet if it exists
On Error Resume Next
    Application.DisplayAlerts = False
    Worksheets("PivotTable").Delete

'Create new sheet and name it "PivotTable"
Set pivotSht = Sheets.Add
ActiveSheet.Name = "PivotTable"

'Set location of pivot table
startPvt = pivotSht.Name & "!" & pivotSht.Range("A3").Address(ReferenceStyle:=xlR1C1)

'Define pivot cache
Set pCache = ActiveWorkbook.PivotCaches.Create( _
    SourceType:=xlDatabase, _
    SourceData:=srcData)

'Creates pivot table from pivot cache
Set pTable = pCache.CreatePivotTable( _
    tabledestination:=startPvt, _
    TableName:="Open Order Book Table")

End Sub

The expected output is a pivot table using all data as the source, even with changing data.
...