PowerPoint VBA更改图表中所选项目的字体颜色

时间:2019-07-13 19:57:47

标签: excel vba powerpoint powerpoint-vba

我知道这听起来很简单,但是我在网站和网站上都找不到任何解决方案。

因此,我在Excel中有一个宏,它可以更改任何选定项目的字体颜色-范围,图表,文本框等-并且代码非常简单:

Selection.Font.Color = RGB(0,0,0)

但是在PowerPoint中,没有Excel中的“选择”通配符。在PowerPoint中,此功能非常适合文本框-

ActiveWindow.Selection.TextRange.Font.Color = RGB(0,0,0)

但是它不适用于图表和表格。因此,对于图表,我使用此代码-

ActiveWindow.Selection.ShapeRange(1).Chart.ChartArea.Format.TextFrame2.TextRange.Font.Fill.ForeColor.RGB RGB(0,0,0)

问题在于它会更改图表中的所有文本-标题,标签,轴等。我只需要更改所选项目的字体颜色。例如,仅标题或标签,取决于用户决定选择什么。

我不知道如何区分图表中选择的项目,以便仅将更改应用于该项目。例如-

.ChartTitle.Format.Fill.ForeColor.RGB, etc.

有没有一种方法可以识别选择了哪个项目?还是仅将更改应用到它?谢谢。

3 个答案:

答案 0 :(得分:2)

您非常亲密。除了.ChartArea之外,您还可以访问其他图表项目,例如.ChartTitle

此示例循环浏览幻灯片上的所有形状,包括一些额外的检查以防止错误。如果形状具有图表,则图表具有标题,标题具有文本,请指定图表标题字体的颜色。

Sub FontColor_ChartTitle()

    With ActivePresentation.Slides(1)

        'Loop through all shapes on the slide
        For i = 1 To .Shapes.Count

            With .Shapes(i)

                'If the shape is a chart
                If .HasChart Then

                    'If the chart has a title
                    If .Chart.HasTitle Then

                        With .Chart.ChartTitle.Format.TextFrame2

                            'If the title contains text
                            If .HasText Then

                                With .TextRange.Font

                                    .Fill.ForeColor.RGB = RGB(95, 37, 97)

                                End With

                            End If

                        End With

                    End If

                End If

            End With

        Next

    End With

End Sub

答案 1 :(得分:1)

由于基本问题是在为客户端提供更多颜色的同时避免让它们输入RGB值,因此我认为您可能需要评估最简单,最灵活的方法。 对于主题颜色以外的颜色选项,将自定义颜色添加到文件是一种更好的方法。我将删除所有基于VBA选择的格式。本文着重介绍PowerPoint,但是自定义颜色也可以在Word和Excel中使用:Custom Colors added to color picker

答案 2 :(得分:1)

不幸的是,您的问题的简单答案是不。 PPT对象模型无法返回图表中的所选项目。

John Korchok的建议应允许您向用户提供所需的颜色以供选择。