2017-01-24 2 views
1

나는이 모든 것을 약간 새로운 것으로 생각하고있다. 프로젝트에 대한 내 머리를 조금이라도 들었고, 약간의 지침을 얻을 수 있는지 궁금해하고 있었다.Powerpoint 2016 VBA 픽스 드

장면을 설정해 드리겠습니다. 나는 그것이 그림의 3 개의 층을 가지고있는 힘 점을 가지고있다, 그들은 모든 카드 다. 뒤쪽 레이어는 제 장소의 소지자로서 소송 및 가치가있는 임의의 카드입니다. 두 번째 레이어는 에이스 레이어이고 마지막 레이어는 카드 백입니다. 나는 20 개의 세트로 구성된이 3 개의 이미지를 가지고있다. 스핀 전환을 설정 했으므로 카드의 트리거를 클릭하면 돌아가며 에이스는 항상 자리 표시 자 앞에 나타나기 때문에 매번 표시된다.

생각에는 내가 가지고있는 매크로가 1 개 있고 ZOrder msoSendToBack을 사용하여 모두 다시 밀어 넣을 수 있습니다.

3 번째 에이스 중 3 개를 무작위로 가져 와서 레이어와 인라인하는 두 번째 매크로가 먼저 표시되어야합니다. 이제 내가 직면 한 문제는 VBA 코드입니다.

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

이것은 일반적인 검색을 통해 발견 된 코드입니다.

나는 어떤 지침이나 조언을 주셔서 감사하겠습니다. 나는 이것이 더 어려운 방법 일 수 있음을 알고 있습니다. 나는 단지 소프트웨어 엔지니어링 학생이므로 새로운 것을 시작했습니다. 하지만 C#이나 Java가 더 강합니다. 그러나 정직하게 아무것도 appreicated 것입니다.

답변

0

먼저, 어쩔 수없이 선택하지 마십시오.

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

개 이상의 모양을 처리해야하기 때문에, 내가 태그를 사용하는 경향 거라고 : 이 동일한 효과를 얻을 수 있습니다. 예를 들어, 모양을 선택한 다음이 실행

하위 BackLayer() 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 
관련 문제