尽管PivotField NumberFormat可以手动运行,但无法通过VBA应用

时间:2019-02-14 00:07:44

标签: excel vba number-formatting

数据透视表字段(度量)从数据透视表中删除后会失去其格式。将它们添加回数据透视表后,您必须重新设置其格式。我正在使用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格式功能(颜色!)不支持此功能。
  • 即使更改了数据透视表中的字段,即使设置了pivottable属性以保留更新时的单元格格式,也无法使用单元格的手动格式设置。
  • 如果您尝试使用ConditionalFormatting,则与此相同

我尝试过的宏选项:

  • 即使在工作表上也要进行数据透视表更新-Excel经常崩溃(如果接下来我将继续错误恢复,它将调用该过程,例如30次;否则将引发错误并崩溃。)

  • 我删除了“ ghost”自定义格式,然后再次尝试,Excel似乎重新创建了我不想要的自定义格式。

  • 我已经在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

0 个答案:

没有答案