2017-07-28 4 views
2

Guten Tag VBA Experten gibt,Powerpoint VBA: Clearing Form Farbe

Ich versuche, einen Code zu schreiben, die eine Form Farbe zu suchen und es dann in irgendwo positionieren.

Beispiel

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 

Wie ich meinen Code verwenden:

ich diesen Code mit einer Füllfarbe Grau = RGB (210.210.210) auf bestimmte Formen fügen Sie dann die Farbe löschen und die Form neu positionieren wo ich wollte

Wenn ich jedoch diesen Code erneut ausführen, wird die Form, die die graue Farbe hinzugefügt hat, erneut positioniert, obwohl es keine Füllung hat.

Irgendwie fühlte ich, dass die Form sich an die Farbe erinnert, die auf sie zutreffen, was ich nicht wollte.

Ich schätze, wenn jemand mir einen Einblick geben kann, wie ich dieses Problem überwinden kann.

Dank

+1

Vityatas Antwort sollte die Arbeit für Sie erledigen. Der Grund dafür, dass Sie Probleme haben, besteht darin, dass die Füllung der Form zwar nicht sichtbar ist, aber ihr Attribut fill * color immer noch die ursprüngliche graue Farbe ist, nach der Sie suchen, damit sie wieder gefunden wird. –

+0

Hallo Danke Steve für deine Antwort. Ich versuche, die ursprüngliche graue Farbe zu löschen. Wenn ich versuche, die Farbe manuell mit "No Fill" zu füllen, funktioniert es, ist da der Code als VBA? Weil ich die Form nicht durch eine andere Farbe ersetzen möchte, nicht einmal mit Weiß, könnte sie anderen Text auf der Folie überlagern und sie überdecken. –

Antwort

1

Versuchen wie folgt aus:

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 

Sobald Sie die graue Form finden, stellen Sie sicher, dass Sie RGB(0,0,0) seine Farbe ändern. Daher wird es nicht mehr grau sein und wird nicht berücksichtigt, wenn Sie den Code erneut ausführen. Ich habe es mit dieser Zeile gemacht:

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

Hallo Vityata, danke für Ihre Hilfe. mein Schlechter, ich hätte es deutlicher machen sollen, ich verstehe deine Lösung, da sich die Füllfarbe geändert hat, habe ich versucht, .Fill.ForeColor.RGB = (255,255,255) hinzuzufügen, um die Füllbox weiß zu machen, merkte aber, dass manchmal die Füllung Farbe blendet eine andere Textbox in anderen Folien aus. Ich habe mich gefragt, ob es überhaupt eine Möglichkeit gibt, die Füllfarbe transparent zu machen, eher irgendeinen Vordergrund.RGB? Ich habe versucht .Fill.Visible = msoFalse, aber auf diese Weise wird das Textfeld trotzdem ausgewählt, obwohl die Füllfarbe entfernt wurde. –

+0

@GeraldTow - dieser Link sollte für die Transparenz helfen. https://msdn.microsoft.com/VBA/PowerPoint-VBA/articles/fillformat-transparency-property-powerpoint Oder dies -> 'ActiveWindow.Selection.ShapeRange.Fill.Transparency = 0.5' – Vityata

+0

Dank Vityata, habe ich diese Methode versucht , aber die graue Farbfüllung, die zuvor eingestellt wurde, wird immer noch "erinnert". obwohl Transparenz auf 0% gesetzt wurde. Darf ich fragen, kennen Sie einen Code, der eine Form vollständig "No Fill" hat? Vielen Dank für Ihre Hilfe. Sehr schätzen –

Verwandte Themen