【问题标题】:PowerPoint VBA Changing font color of selected item in chartPowerPoint VBA 更改图表中所选项目的字体颜色
【发布时间】:2019-11-23 03:11:34
【问题描述】:

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

所以,我在 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.

有没有办法确定选择了什么项目?还是仅将更改应用于它?谢谢。

【问题讨论】:

  • 主要用途是为企业品牌提供颜色选项。由于有几种变化,主题颜色是不够的。因此,在 Excel 中,我有每种颜色的按钮,用户决定他/她想要着色的内容。它工作正常。但在 PowerPoint 中我找不到方法...

标签: excel vba powerpoint


【解决方案1】:

很遗憾,您的问题的简单答案是否定的。 PPT对象模型无法返回图表中的选中项。

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

【讨论】:

    【解决方案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
    

    【讨论】:

    • 感谢您的回答。但是,有没有办法将代码应用于所选项目?有时可能是标题,有时可能是标签。我不想总是将字体颜色应用于同一个项目,而只是用户选择的项目。
    • @manu197a 你能提供一个颜色按钮的例子吗?在您的 Excel 示例中,用户是否选择了表格的一部分然后单击其中一个按钮?该按钮是启动颜色选择器还是静态颜色?
    • 另外,您能否告诉我是否使用了双显示器,以及这是否是用户将从中复制该文件以定制供他们使用的主要模板文件?
    • 所以,按钮是静态颜色——例如,我有一个绿色和一个蓝色。每个都是我功能区中的一个按钮。当用户按下按钮时,任何选定的文本都会被着色为代码中定义的特定 RGB。在 Excel 中,这就像一行一样简单: Selection.Font.Color = RGB(0,0,0) 功能区不是用户更改颜色的模板,而是帮助他们仅使用这些颜色 (因为当我们使用任何其他颜色时,公司是非常不宽容的)
    【解决方案3】:

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

    【讨论】:

    • 约翰,谢谢你的建议。我会尝试这个选项,因为它似乎是最方便的选项。但是我公司的用户对 Office 一无所知,我怀疑他们是否能够下载主题文件、打开 PP、选择它并使用颜色——这就是我们需要这个功能区的原因,他们只需按下一个按钮即可获得正确的颜色。因此,我将尝试编写一个代码来从头开始创建我自己的主题文件,将其保存到光盘中,选择它并告诉用户他们现在可以使用主题颜色。我会及时通知你。
    • 您的 VBA 代码的用户来源是什么?如果它是启用宏的演示文稿或模板,您将为其添加自定义颜色。 VBA 和自定义颜色的分布问题是相同的。此外,许多公司能够使用 Windows 下的组策略将文件发布给他们需要的用户。你的 I.T.部门会知道更多。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 2011-07-01
    • 2013-05-03
    相关资源
    最近更新 更多