【问题标题】:Change data label format in PowerPoint Charts更改 PowerPoint 图表中的数据标签格式
【发布时间】:2020-10-26 14:55:54
【问题描述】:

我有一个带有许多图表的 PPT 演示文稿。每个图表都有数据标签。这些数据标签的格式为##.##。我正在尝试通过 VBA 将其更改为 ##.0。这是我的工作:

Sub Format_Datalabels()

    Dim Layout As CustomLayout
    Dim Slide As Slide
    Dim Shape As Shape
    
    
    For Each Slide In ActivePresentation.Slides
        For Each Shape In Slide.Shapes
            With Shape
                If .HasChart Then
                    With .Chart
                        For Each Point In .SeriesCollection(1)
                        .DataLabels.NumberFormat = "##.0"
                    End With
                End If
            End With
        Next

End Sub

我想,我实际上并没有掌握实际的数据标签。我被抛出错误“找不到方法或数据对象”。知道如何实际格式化给定演示文稿中所有图表的所有数据标签吗?

【问题讨论】:

  • docs.microsoft.com/en-us/office/vba/api/powerpoint.datalabels 展示了如何更改附加到系列的所有数据标签的格式。
  • 感谢@TimWilliams!我的灵感就是从那里得到的。我还是不行。知道我做错了什么吗?
  • .Chart.SeriesCollection(1).DataLabels.NumberFormat = "##.0" 不起作用?
  • 很遗憾没有。同样的错误。

标签: vba charts error-handling powerpoint


【解决方案1】:

NumberFormat 的文档记录很差。在这种情况下,0 不被视为文字,而是被视为特殊字符。如果第一个小数位有数字,则显示该数字。如果没有数字,则显示 0,因此 4 变为 4.0,但 4.1 仍为 4.1。

通常在数学中,如果每个十进制数都是 0,则根本不显示它。 4 优于 4.0。但是,如果您需要将所有第一位小数替换为 0,方法如下:

.DataLabels.NumberFormat = "##"".0"""

在这里,因为 .0 在双双引号中,所以它被视为文字。我还没有尝试调试您的代码。这是一个经过测试可以正常工作的宏:

Sub ChangeDataLabelNumberFormat()
    With ActivePresentation.Slides(1).Shapes(1)
        If .HasChart Then
            With .Chart.SeriesCollection(1)
                .HasDataLabels = True
                .DataLabels.NumberFormat = "##"".0""" 'Displays all numbers as XX.0
            End With
        End If
    End With
End Sub

【讨论】:

  • 感谢您的提醒。但不幸的是,这并不能解决问题。似乎根本无法识别 DataLabels。我仍然收到错误消息。代码是否在您的环境中运行?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-21
相关资源
最近更新 更多