Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel PowerPoint VBA更改图表中选定项目的字体颜色_Excel_Vba_Powerpoint - Fatal编程技术网

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

Excel PowerPoint VBA更改图表中选定项目的字体颜色,excel,vba,powerpoint,Excel,Vba,Powerpoint,我知道这听起来很简单,但我在网站上和这个网站上都没有找到任何解决方案 因此,我在Excel中有一个宏,可以更改任何选定项目的字体颜色-范围、图表、文本框等,代码非常简单: Selection.Font.Color = RGB(0,0,0) 但在PowerPoint中,Excel中没有选择通配符。在PowerPoint中,这对文本框很有效- ActiveWindow.Selection.TextRange.Font.Color = RGB(0,0,0) 但它不适用于图表和表格。所以,对于图表,

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

因此,我在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.

是否有办法确定所选项目?还是仅对其应用更改?谢谢。

由于基本问题是为客户提供更多颜色,同时避免他们输入RGB值,因此我认为您可能需要评估最简单、最灵活的方法。
对于主题颜色以外的颜色选项,向文件中添加自定义颜色是更好的方法。我会删除所有基于VBA选择的格式。这篇文章强调PowerPoint,但自定义颜色也可以在Word和Excel中使用:

你们非常接近。您可以访问其他图表项,例如.ChartTitle,而不是.ChartArea

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

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中,我为每种颜色设置了按钮,用户可以决定他/她想要的颜色。它很好用。但在PowerPoint中我找不到方法…谢谢你的回答。但是,是否有方法将代码应用于所选项目?有时可能是标题,而另一些可能是标签。我不想将字体颜色始终应用于同一项目,而只应用于用户选择的项目。@manu197a能否提供颜色按钮的示例?在Excel示例中,用户是否选择表的一部分,然后单击其中一个按钮?该按钮是启动颜色选择器还是静态颜色?另外,您能否告诉我是否使用了双监视器,以及这是否将是一个主模板文件,用户将从中复制文件以自定义以供使用?因此,按钮是静态颜色-例如,我有绿色和蓝色按钮。每个都是我的功能区中的一个按钮。当用户按下按钮时,任何选定的文本都会按照代码中定义的特定RGB着色。在Excel中,这就像一行一样简单:Selection.Font.Color=RGB0,0,0功能区不是用户更改颜色的模板,而是帮助用户仅使用这些颜色,因为当我们使用任何其他颜色时,公司非常不容忍John,感谢您的建议。我将尝试这个选项,因为它似乎是最方便的一个。但我公司的用户对Office一无所知,我怀疑他们是否能够下载主题文件,打开PP,选择它并使用颜色——这就是为什么我们需要这个功能区,让他们只需按下一个按钮就可以得到正确的颜色。因此,我将尝试想出一个代码,从头创建我自己的主题文件,将其保存到光盘,选择它,并告诉用户现在可以使用主题颜色。我会随时通知你。你的VBA代码的用户来源是什么?如果是启用宏的演示文稿或模板,您可以向其添加自定义颜色。VBA和自定义颜色的分布问题是相同的。此外,许多公司能够在Windows下使用组策略向他们需要的用户推出文件。你的IT部门会知道更多。