PowerPoint VBA 更改图表中所选项目的字体颜色
PowerPoint VBA Changing font color of selected item in chart
我知道这听起来很简单,但我还没有在网上和这个网站上找到任何解决方案。
所以,我在 Excel 中有一个宏,它可以更改任何 selected 项目(范围、图表、文本框等)的字体颜色,而且代码非常简单:
Selection.Font.Color = RGB(0,0,0)
但是在 PowerPoint 中 Excel 中没有 "Selection" 通配符。在 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)
问题是它更改了图表中的所有文本——标题、标签、轴等。而我只需要更改 selected 项目的字体颜色。例如,仅标题或仅标签,具体取决于用户决定 select.
我不知道如何区分图表中 select 的项目,以便仅对其应用更改。例如--
.ChartTitle.Format.Fill.ForeColor.RGB, etc.
有没有办法识别 selected 的项目?还是仅将更改应用于它?谢谢。
由于基本问题是为客户端提供更多颜色,同时避免让他们输入 RGB 值,我认为您可能需要评估最简单、最灵活的方法来做到这一点。
对于主题颜色之外的颜色选项,将自定义颜色添加到文件是更好的方法。我会放弃所有 VBA selection-based 格式。本文着重于 PowerPoint,但在 Word 和 Excel 中也可以使用自定义颜色:Custom Colors added to color picker
你们非常亲密。除了 .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
很遗憾,您的问题的简单答案是否定的。 PPT 对象模型无法返回图表中的所选项目。
不过,John Korchok 的建议应该允许您向用户提供所需的颜色以供选择。
我知道这听起来很简单,但我还没有在网上和这个网站上找到任何解决方案。
所以,我在 Excel 中有一个宏,它可以更改任何 selected 项目(范围、图表、文本框等)的字体颜色,而且代码非常简单:
Selection.Font.Color = RGB(0,0,0)
但是在 PowerPoint 中 Excel 中没有 "Selection" 通配符。在 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)
问题是它更改了图表中的所有文本——标题、标签、轴等。而我只需要更改 selected 项目的字体颜色。例如,仅标题或仅标签,具体取决于用户决定 select.
我不知道如何区分图表中 select 的项目,以便仅对其应用更改。例如--
.ChartTitle.Format.Fill.ForeColor.RGB, etc.
有没有办法识别 selected 的项目?还是仅将更改应用于它?谢谢。
由于基本问题是为客户端提供更多颜色,同时避免让他们输入 RGB 值,我认为您可能需要评估最简单、最灵活的方法来做到这一点。 对于主题颜色之外的颜色选项,将自定义颜色添加到文件是更好的方法。我会放弃所有 VBA selection-based 格式。本文着重于 PowerPoint,但在 Word 和 Excel 中也可以使用自定义颜色:Custom Colors added to color picker
你们非常亲密。除了 .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
很遗憾,您的问题的简单答案是否定的。 PPT 对象模型无法返回图表中的所选项目。
不过,John Korchok 的建议应该允许您向用户提供所需的颜色以供选择。