2017-07-28 89 views
2

好日子,VBA专家那里,Powerpoint 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 

我如何用我的代码:

我使用此代码添加填充颜色灰色= RGB(210210210),以一定的形状,然后清除颜色和重新定位形状到我想要的地方

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

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

欣赏是否有人能为我提供一些关于如何克服这个问题的见解。

感谢

+1

Vityata的答案应该为你做的工作。您遇到问题的原因是,即使形状的填充不可见,其fill * color *属性仍然是您正在搜索的原始灰色,因此它会再次找到。 –

+0

嗨,感谢Steve的回复。我正在尝试清除原始的灰色。当我尝试用“无填充”手动填充颜色时,它的工作原理是否包含VBA代码?因为即使是白色,我也不想用另一种颜色来替换形状,但可能会覆盖幻灯片上的其他文字并覆盖它们。 –

回答

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) 
+0

嗨Vityata,感谢您的协助。我的坏,我应该更清楚,我知道你的解决方案将会因为填充颜色已经改变,我试图添加.Fill.ForeColor.RGB =(255,255,255),使填充框变白,但意识到有时填充颜色会阻挡其他幻灯片中的其他文本框。我想知道是否有任何方法将填充颜色设置为透明而不是任何forecolor.RGB?我尝试过.Fill.Visible = msoFalse,但是这种方式下,即使填充颜色已被删除,文本框仍然会被选中。 –

+0

@GeraldTow - 这个链接应该有助于透明度。 https://msdn.microsoft.com/VBA/PowerPoint-VBA/articles/fillformat-transparency-property-powerpoint或者这个 - >'ActiveWindow.Selection.ShapeRange.Fill.Transparency = 0.5' – Vityata

+0

谢谢Vityata,我试过这个方法,但之前设置的灰色填充仍然“被记住”。尽管透明度设置为0%。请问你知道任何让形状完全没有填充的代码吗?感谢您一直以来的帮助。非常感谢 –