2017-07-28 1 views
2

良い一日パワーポイントVBA:私は形の色を検索するコードを記述し、その後、どこかにそれを配置しようとしている、そこ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の答えはあなたのために仕事を行う必要があります。あなたが問題を抱えている理由は、図形の塗りつぶしが見えなくても、塗りつぶし* color *属性は依然として元の灰色であるため、再度検索されます。 –

+0

お返事ありがとうございました。元のグレーの色をクリアしようとしています。私が手動で「塗りつぶしなし」でカラーを塗りつぶしてみると、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)他のスライドのテキストボックスの一部が色づいてしまいます。塗りつぶしの色を透明にする方法があれば疑問に思った.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%に設定されています。形に「塗りつぶしなし」を完全に持たせるコードを知っていますか?これまでのご協力ありがとうございます。大変感謝しています –

関連する問題