2017-01-24 10 views
1

私はちょっとだけ新しいことをしています。これはプロジェクトで私の頭を少し上回り、ちょっとした指導ができるかどうか疑問に思っていました。Powerpoint 2016 VBA Pictures

シーンを設定します。私は絵の3層を持っている力点を持って、彼らはすべてのカードです。バックレイヤーは私の場所のホルダーで、スーツとバリューのランダムなカードです。第2層はエースの層であり、最終層はカードの裏である。 私はこれらの3つのイメージの20のセットを持っています。私はちょっとしたスピントランジションを設定していますので、カードのトリガーをクリックしてスピンして、エースがプレースホルダの前に表示されます。

私は私のリセットである1つのマクロを持っており、ZOrder msoSendToBackを使ってそれらをすべてバックにプッシュします。

3番目のエースをランダムに3回進め、レイヤーとインラインになるようにすると、最初に表示する必要があります。今私が直面している問題は、VBAコードです。

Sub Reset() 
    ActiveWindow.Selection.SlideRange.Shapes("Picture29").Select 
    ActiveWindow.Selection.ShapeRange.ZOrder msoSendToBack 
End Sub 

これは一般的な検索で見つかったコードです。

私はどんな指導やアドバイスをいただければ幸いです。私はこれをより困難な方法でやっているかもしれません。私は唯一のソフトウェア工学の学生ですので、これに新しいです。しかし、C#やJavaではより強力です。しかし、正直なところ、何かを訴えることはありません。

答えて

0

まず、絶対に避けられない限り、ANYTHINGを選択しないでください。

Sub Reset() 
    With ActiveWindow.Selection.SlideRange.Shapes("Picture29") 
     .ZOrder msoSendToBack 
    End With 
End Sub 

複数の形状に対処する必要があるので、私はタグを使用するように傾いているはずだ: これは、同じ効果があります。 たとえば、図形を選択し、これを実行します。

サブ裏打ち()ActiveWindow.Selection.ShapeRange(1) .Tags.Add "レイヤー" End Subのでは、 "戻る" 端と

バックレイヤーアイテムごとにこれを行い、同様に他のレイヤーシェイプを識別します。次に使用中、[エアー・アラート!]

Sub Reset() 
    Dim oSh as Shape 
    For Each oSh in ActiveWindow.Selection.SlideRange(1) 
     If oSh.Tags("Layer") = "Back" Then 
     oSh.Zorder msoSendToBack 
     End If 
     ' Add further IF tests to identify other layers 
     ' and deal with them appropriately 
    Next 
End Sub 
関連する問題