Поля сводной таблицы с использованием String Array - PullRequest
0 голосов
/ 17 января 2020

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

Sub view()


Application.ScreenUpdating = False

On Error Resume Next
Dim field(1 To 15) As String
Dim i As Long
Dim lastrow As Long
Dim lastcol As Long
Dim PCache As PivotCache
Dim PTable As PivotTable
Dim PRange As Range

field(1) = "Country Name"
field(2) = "Category Name"
field(3) = "Status"
field(4) = "Type Name"
field(5) = "Subtype Name"
field(6) = "Subtype Code"
field(7) = "Assign Dept Name"
field(8) = "Creation Date2"
field(9) = "Closed Date2"
field(10) = "Channel Name"
field(11) = "Type Inquiry"
field(12) = "Status2"
field(13) = "Equal  Month"
field(14) = "Days"
field(15) = "Bracket"

Application.DisplayAlerts = False
Worksheets("View").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "View"
Application.DisplayAlerts = True

ActiveWorkbook.Worksheets("Recurrence").PivotTables("PivotTable1").PivotCache. _
        CreatePivotTable TableDestination:="View!R1C1", TableName:="PivotTable4", _
        DefaultVersion:=6
    Sheets("View").Select
    Cells(1, 1).Select

    With ActiveSheet.PivotTables("PivotTable4").PivotCache
        .RefreshOnFileOpen = False
        .MissingItemsLimit = xlMissingItemsDefault
    End With

    For i = 1 To 15
    ActiveSheet.PivotTables("PivotTable4").RepeatAllLabels xlRepeatLabels
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("PivotTable4").PivotFields("field(i)")
        .Orientation = xlRowField
        .Position = i
        .LayoutForm = xlTabular
        .RepeatLabels = True
    End With

    ActiveSheet.PivotTables("PivotTable4").PivotFields("field (i)").Subtotals = _
        Array(False, False, False, False, False, False, False, False, False, False, False, False)

    Next

    ActiveSheet.PivotTables("PivotTable4").AddDataField ActiveSheet.PivotTables( _
        "PivotTable4").PivotFields("Value"), "Sum of Value", xlSum
End Sub

...