PivotField NumberFormat не применяется через VBA, хотя работает вручную - PullRequest
0 голосов
/ 14 февраля 2019

Поля (показатели) сводной таблицы теряют свое форматирование при удалении из сводной таблицы.Вы должны переформатировать их после добавления их обратно в сводную таблицу.Я использую Excel 2019, PowerPivot с моделью данных внутри Excel.

Мне нужно форматирование, которое включает в себя различные цвета для +-0.Это форматирование: [Color10]0,00%;[Red]-0,00%;[Black]- (Color10 - это правильный кодированный цвет в Excel для форматирования чисел)

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

Таким образом, после запуска кода применяется числовой формат [Color10]#.000%;[Red]-#.000%;[Black]- вместо [Color10]0,00%;[Red]-0,00%;[Black]-.Обратите внимание, что когда я применяю это желаемое форматирование вручную - оно остается таким.

Кажется, что проблема не связана с сводными таблицами или самим PowerPivot.Та же проблема возникает при попытке сделать

ActiveSheet.Range("F1").NumberFormat = "[Color10]0,00%;[Red]-0,00%;[Black]-"

Это работает , если я вручную применяю желаемое форматирование к ячейке, а затем применяю форматирование из этой ячейки ксводное поле, подобное следующему:

.PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat = ActiveSheet.Range("F1").NumberFormat

Что мне не хватает?

Другие не-макро параметры, которые я пробовал:

  • Это не поддерживается в Excelмодель данных (цвета!)
  • Это не поддерживается функцией форматирования DAX (цвета!)
  • Использование ручного форматирования ячеек даже с установкой поворотного свойства для сохранения форматирования ячеек при обновлении не сохраняетэто когда вы меняете поля в сводной таблице.
  • То же самое, если вы пытаетесь использовать ConditionalFormatting

Параметры макроса, которые я пробовал:

  • в сводном обновлении даже для рабочего листа - Excel регулярно падает (он вызывает процедуру, например, 30 раз, если я оставляю сообщение об ошибке, а затем выдает ошибку; происходит сбой.)

  • I 'мы удалили "произвольное "пользовательское форматирование, попробовал еще раз, и Excel, похоже, воссоздает то пользовательское форматирование, которое мне не нужно.

  • Я искал потенциальные escape-символы для знака % в строке VBAно ничего особенного не пришло, кроме самих двойных кавычек.


Sub set_pivottable_number_formatting()

    With ActiveSheet.PivotTables(1)
        MsgBox .PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat
        .PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat = "[Color10]0,00%;[Red]-0,00%;[Black]-"

        MsgBox .PivotFields("[Measures].[M To Market vs IMS Volume %]").NumberFormat
    End With

End Sub
...