2016-07-13 4 views
0

Я использую vba для создания сводной таблицы. В таблице есть несколько фильтров, и я не могу выбрать несколько элементов из фильтра.Выбор нескольких элементов в excel pivot table

Я записал макрос и использовать одни и те же функции, что и система генерировала код, но я получаю

"Run-time error '1004': Unable to set the CurrentPage Property of the PivotField Class" 

Ниже приведен код, который используется для создания сводной таблицы, которая работает:

Dim objTable As PivotTable 
    Dim objField As PivotField 

    ' Select the sheet and first cell of the table that contains the data. 
    ActiveWorkbook.Sheets("All Projects - iNexus").Select 
    Range("A1").Select 

    ' Create the PivotTable object based on the Employee data on Sheet1. 
    Set objTable = ActiveSheet.PivotTableWizard 

    ' Specify row and column fields. 
    Set objField = objTable.PivotFields("Product") 
    objField.Orientation = xlRowField 
    Set objField = objTable.PivotFields("SPA Value Category") 
    objField.Orientation = xlColumnField 

    ' Specify a data field with its summary 
    ' function and format. 
    Set objField = objTable.PivotFields("2014 FY Value ($)") 
    objField.Orientation = xlDataField 
    objField.Function = xlSum 
    objField.NumberFormat = "$ #,##0" 

    Set objField = objTable.PivotFields("2015 FY Value ($)") 
    objField.Orientation = xlDataField 
    objField.Function = xlSum 
    objField.NumberFormat = "$ #,##0" 

    ActiveSheet.Name = "iNexus Pivot" 

    ' Rename the pivot table 
    With Sheets("iNexus Pivot") 
     .PivotTables(1).Name = "PivotTable2" 
    End With 

    With Sheets("iNexus Pivot").PivotTables("PivotTable2").DataPivotField 
     .Orientation = xlColumnField 
    End With 

это код, который я получил от записанного макроса, чтобы выбрать несколько элементов из записанного макроса:

ActiveSheet.PivotTables("PivotTable2").PivotFields("Project Status"). _ 
    CurrentPage = "(All)" 
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Project Status") 
     .PivotItems("A").Visible = False 
     .PivotItems("B").Visible = False 
     .PivotItems("C").Visible = False 
    End With 
    ActiveSheet.PivotTables("PivotTable2").PivotFields("Project Status"). _ 
     EnableMultiplePageItems = True 

Как CurrentPage, так и PivotItems, кажется, являются источником проблемы, мои навыки vba очень ограничены, и я не могу отладить проблему.

Спасибо. Цените помощь.

+0

Является ли поле статуса проекта «фильтром отчета» или «меткой столбца» (или «меткой столбца»). В зависимости от этого код немного отличается. –

+0

@ScottHoltzman: В этом конкретном случае это фильтр отчетов, но у меня также есть фильтр столбцов. Я предполагаю, что разница между отчетами, строкой и столбцом не слишком велика. – Yuvaraj

ответ

0

я понял, проблема и решение включить фильтры при назначении ориентации с помощью следующей команды:

objField.PivotItems("XXX").Visible = False 

enter link description here

Я нашел логику из приведенной ниже ссылке.

Смежные вопросы