Смена скрипта с DataField на CubeField VBA? - PullRequest
0 голосов
/ 27 марта 2019

У меня есть сводная таблица и простая кнопка, при нажатии которой я хочу изменить сводную таблицу DataField с «Pax» на «Общий доход». А затем сортировать от крупнейших до самых маленьких. Приведенный ниже скрипт работал нормально, когда это была просто обычная сводная таблица, но теперь я изменил ее на сводную таблицу из моей модели данных, и VBA не работает.

Я считаю, что мне нужно изменить код VBA на .CubeFields и т. Д., Но никогда раньше этого не делал, поэтому я очень, очень растерялся.

Private Sub CommandButton1_Click ()

    Dim pt1 As PivotTable
    Dim Field1 As PivotField
    Dim pi As PivotItem
    Dim sumField As String

    sumField = Range("AO5").Value

    '-----Pivot1-----

    Set pt1 = PivotTables("PivotTable1")


    pt1.DataFields(1).Orientation = xlHidden
    pt1.PivotFields(sumField).Orientation = xlDataField
    pt1.AllowMultipleFilters = True
    pt1.RefreshTable

    If sumField = "Total Revenue" Then

    ActiveSheet.PivotTables("PivotTable1").PivotFields("Main Tour Code").AutoSort _
    xlDescending, "Sum of Total Revenue", ActiveSheet.PivotTables("PivotTable1"). _
    PivotColumnAxis.PivotLines(1), 1

    Else


    ActiveSheet.PivotTables("PivotTable1").PivotFields("Main Tour Code").AutoSort _
    xlDescending, "Sum of Pax", ActiveSheet.PivotTables("PivotTable1"). _
    PivotColumnAxis.PivotLines(1), 1

    End If

End Sub

В ячейке «AO5» будет отображаться «Общий доход», если в DataField / CubeField в данный момент отображается «Pax», и наоборот.

В сводной таблице отображается Pax / Total Доход во втором столбце, в первом столбце отображается «Код основного тура»

Сводка подается из модели данных [BookingsTable]

Я читал различные форумы и перепробовал много вещей, но ничего не работает, и мне действительно нужна помощь.

Пример файла находится здесь: https://drive.google.com/open?id=1ipEGhcZIiscWWy6HzWWdAomt7nATDQDA

Большое спасибо :) CM

...