2017-12-20 16 views
0

スライド上のいくつかの図形を選択して、選択したすべての図形にマクロを実行したいとします。たとえば、シェイプのアニメーションの遅延時間を一定の値だけ増やしたいとします。 注:一部の図形にはアニメーションが複数ある場合があります。選択した図形にPowerPoint VBAスクリプトを適用するにはどうすればよいですか?

これまでのところ、次のコードがあります。これはトリックですが、現在のスライド上のすべての図形に適用されます。

Sub ActiveSlideShapes_DelayInc() 
    Dim osld As Slide 
    Dim i  As Long 
    Dim a  As Integer 
    Dim oeff As Effect 
    Const sngDel As Single = 0.1 

    Set osld = ActiveWindow.Selection.SlideRange(1) 

    For i = osld.TimeLine.MainSequence.Count To 1 Step -1 
     Set oeff = osld.TimeLine.MainSequence(i) 
     With oeff 
      .Timing.TriggerDelayTime = .Timing.TriggerDelayTime + sngDel 
     End With 
    Next i 
End Sub 

もう1つの解決策は、シェイプの代わりに実際のタイムライン要素を選択することです。そして、それらの選択されたアニメーションに対してのみ、 "For ... Next"ループを実行します。これは、特定のシェイプに複数の異なるアニメーションが添付されている場合に、より洗練されたソリューションになります。これは可能ですか?

答えて

0

selection.shaperangeを使用すると、選択されている各図形がループします。

For Each Shp In Selection.ShapeRange 
With Shp 
      .Timing.TriggerDelayTime = .Timing.TriggerDelayTime + sngDel 
     End With 
Next 
+0

これにより、「メソッドまたはデータメンバーが見つかりません」というコンパイルエラーが表示されます。 2番目の ".Timing"がエラーとして強調表示されます。 (これは奇妙なことです...もしあれば、私は ".Timing"の最初のインスタンスがエラーを生成することを期待しています)。 – Wombat

+0

sngDelは定数なので、コード内で0.1で置き換えることができますか? – mooseman

+0

シェイプオブジェクトには.Timingプロパティがありません。これは、エラーメッセージがあなたに伝えようとしているものです。私は最初のインスタンスでそれを適用する前にそのプロパティの値を読み取るように求めているので、エラーが.Timingの2番目のインスタンスで発生すると思います。 –

関連する問題