VBA 如何在开始在 PowerPoint 中的文本框中键入内容之前更改文本颜色

VBA How to change text color before you start typing in a text box in PowerPoint

提问人:user22875845 提问时间:11/8/2023 更新时间:11/8/2023 访问量:29

问:

在PowerPoint中,我有一个文本框,其中已经有灰色的文本。我想添加到该文本框中,并使新的文本颜色为深蓝色,以便您可以看到新增内容。

我试图更改文本框颜色,但这会更改整个文本框的颜色。我需要新文本的颜色为深蓝色

VBA 幻灯片

评论

0赞 Tim Williams 11/8/2023
没有代码可以分享?
0赞 user22875845 11/8/2023
不。。。。我有一个带有内容列表的文本框,我希望用户能够添加到列表中,并且文本默认为深蓝色,因为当前列表是灰色的。这将是一个每周不断增长的列表,每个新星期的列表都会增长,前几周将是灰色我已经弄清楚了如何使用 VBA 将其全部变为灰色,但当用户想要添加新文本以使其变成深蓝色时,他们不必每周手动更改颜色。
0赞 user22875845 11/8/2023
这就是我所拥有的,但它改变了一切蓝色。你能提供正确的代码吗?ActivePresentation.Slides(ActiveWindow.View.Slide.SlideNumber)。Shapes(“文本框 6”)。TextFrame.TextRange.Font.Color.RGB = RGB(0, 0, 139)

答:

1赞 Tim Williams 11/8/2023 #1

在现有灰色文本的末尾添加一个空格 - 选择它并将字体颜色设置为蓝色。当用户键入其他文本时,它将是蓝色的。

Sub tester()
    Dim nm
    For Each nm in Array("TextBox1","TextBox2","TextBox3")
        ResetFontColor ActivePresentation.Slides(1).Shapes(nm)
    Next s
End Sub

Sub ResetFontColor(shp As Shape)
    With shp.TextFrame.TextRange
        .Text = .Text & " "                  'add a space
        .Font.Color = RGB(200, 200, 200)     'set all text to grey
        .Characters(Len(.Text), 1).Font.Color = vbBlue 'change font color of the space
    End With
End Sub

评论

0赞 user22875845 11/8/2023
效果很好!非常感谢!
0赞 user22875845 11/8/2023
有没有一种简单的方法可以将其用于多个形状,例如文本框 1、文本框 2 和文本框 3 以及文本框 4?如下面的代码所示?ResetFontColor ActivePresentation.Slides(1)。形状(文本框 1、文本框 2、文本框 3、文本框 4)?
0赞 Tim Williams 11/8/2023
添加了循环调用的示例。或者,如果文本框名称中有一个通用的子字符串,则可以遍历所有形状,并且仅设置名称包含(例如)“list”的形状的格式
0赞 user22875845 11/8/2023
这很好用,谢谢你的帮助!
0赞 Tim Williams 11/8/2023
如果这回答了您的问题,请标记为“已接受”,以帮助以后遇到类似问题的任何人。