【问题标题】:Powerpoint VBA: Clearing shape colorPowerpoint VBA:清除形状颜色
【发布时间】:2018-02-17 01:15:36
【问题描述】:

祝 VBA 专家们今天好,

我正在尝试编写一个代码来搜索形状颜色,然后将其定位到某个位置。

例子

If shape.Fill.ForeColor.RGB = RGB(210, 210, 210) Then 

With shape
        .Width = 700 
        .Height = 20
        .Top = 80
        .Left = 30
        .Name = "TitleTextBox"
        .Fill.Visible = msoFalse
        .Fill.Transparency = 1.0  '(somehow when I type 1.0 it will become 1#, not sure why on this also)
End With

End if

我如何使用我的代码:

我使用此代码将填充颜色 Gray = RGB(210,210,210) 添加到某些形状,然后清除颜色并将形状重新定位到我想要的位置

但是,当我再次运行此代码时,添加了灰色颜色的形状将再次重新定位,即使它没有任何填充。

不知何故,我觉得形状已经记住了适用于它们的颜色,这不是我想要的。

如果有人可以为我提供一些关于如何克服这个问题的见解,我将不胜感激。

谢谢

【问题讨论】:

  • Vityata 的回答应该可以帮到您。您遇到问题的原因是,即使形状的填充不可见,它的填充 color 属性仍然是您正在搜索的原始灰色,因此会再次找到它。
  • 您好,感谢史蒂夫的回复。我正在尝试清除原始的灰色。当我尝试使用“No Fill”手动填充颜色时,它是否有效,是否包含代码为 VBA?因为我不想用另一种颜色替换形状,即使是白色,它可能会覆盖幻灯片上的其他文本并覆盖它们。

标签: vba powerpoint


【解决方案1】:

试试这样:

Option Explicit
Public Sub TestMe()

    Dim sh      As Shape
    Dim sld     As Slide

    Set sld = Application.ActiveWindow.View.Slide

    For Each sh In sld.Shapes
        If sh.Fill.ForeColor.RGB = RGB(210, 210, 210) Then
            With sh
                .Fill.ForeColor.RGB = RGB(0, 0, 0)
                .Width = 700
                .Height = 20
                .Top = 80
                .Left = 30
                .Name = "TitleTextBox"
                .Fill.Visible = msoFalse
                .Fill.Transparency = 1#
            End With
        End If
    Next sh
End Sub

找到灰色形状后,确保将其颜色更改为RGB(0,0,0)。因此,如果您再次运行代码,它将不再是灰色的,也不会被考虑在内。我已经用这条线做到了:

        .Fill.ForeColor.RGB = RGB(0, 0, 0)

【讨论】:

  • 您好,Vityata,感谢您的帮助。我的错,我应该说得更清楚,我知道你的解决方案会因为填充颜色已经改变,我试图添加 .Fill.ForeColor.RGB = (255,255,255) 以使填充框也变白但意识到有时填充颜色会挡住其他幻灯片中的其他文本框。我想知道是否有任何方法可以将填充颜色设置为透明而不是任何 forecolor.RGB?我试过 .Fill.Visible = msoFalse 但这样即使填充颜色已被删除,文本框仍会被选中。
  • @GeraldTow - 这个链接应该有助于透明度。 msdn.microsoft.com/VBA/PowerPoint-VBA/articles/… 或者这个 -> ActiveWindow.Selection.ShapeRange.Fill.Transparency = 0.5
  • 感谢Vityata,这个方法我试过了,但是之前设置的灰色填充还是“记住了”。即使透明度设置为 0%。请问您是否知道任何让形状完全“无填充”的代码?感谢您一直以来的帮助。非常感谢
猜你喜欢
  • 1970-01-01
  • 2023-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2020-04-24
  • 2018-06-02
  • 1970-01-01
  • 2018-03-08
相关资源
最近更新 更多