Я использую VBA для захвата всех областей, помещенных в сводную таблицу. Код находится нижеPivot Table PivotFields.Position возвращает Ошибка 2042
For Each objCubeFld In pvt.PivotFields 'Loop through all fields in PivotTable
Cubefield(i) = objCubeFld
Orient(i) = objCubeFld.Orientation 'Orientation
Pos(i) = objCubeFld.Position 'Position
i = i + 1
Next objCubeFld
Однако, я получил ошибку ниже.
Я знаю, когда ориентация = "3", это означает, что фильтр. После удаления фильтра программа работает нормально. Может ли кто-нибудь объяснить это?
Является ли фильтр полем даты? – skkakkar
@skkakkar Нет. Любое поле не удастся, а не только дата. Я просто испытал. – NewGuyComesIn
Я совсем недавно начал изучать сводные таблицы, Как я собрал из Интернета. Field.CurrentPage работает только для полей фильтра (также называемых полями страницы). Если вы хотите, чтобы отфильтровать поле строк/столбцов, вы должны перебрать отдельные элементы, например, так: ~ с полем Если .Orientation = xlPageField Тогда .CurrentPage = Значение ELSEIF .Orientation = xlRowField Or. Ориентация = xlColumnField [Then SO Reference Reference ~] (http://stackoverflow.com/questions/37464954/pivot-table-pivotfields-position-returns-error-2042?noredirect1_comment62430216_37464954) – skkakkar