2017-01-24 5 views
1

Ich bin ein wenig neu bei all dem, habe mich ein wenig in den Kopf gesetzt mit einem Projekt und habe mich gefragt, ob ich ein bisschen Anleitung bekommen könnte.Powerpoint 2016 VBA Bilder

Ich werde die Szene für Sie einstellen. Ich habe einen PowerPoint-Punkt, es hat 3 Ebenen von Bildern, sie sind alle Karten. Die Backlayer sind meine Platzhalter nur zufällige Karten von Farbe und Wert. Zweite Schicht ist eine Schicht von Ace und die letzte Schicht ist die Kartenrücken. Ich habe 20 Sätze dieser 3 Bilder Ich habe einen schönen kleinen Spin-Übergang, so dass Sie den Auslöser der Karte zurück, die sie drehen, und sie Ass wird immer angezeigt, weil es vor dem Platzhalter.

Die Idee ist, ich habe 1 Makro, das ist mein Reset und es würde sie alle nach hinten schieben mit ZOrder msoSendToBack.

Ein zweites Makro, das dann 3 der Asse 3 mal zufällig nach vorne bringen würde, damit sie inline mit der Ebene sind, müssen dann zuerst angezeigt werden. Jetzt sind die Probleme, die ich gegenüberstelle, der VBA-Code.

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

Dies ist der Code, den ich über allgemeine Suche gefunden habe.

Ich würde jede Beratung oder Beratung schätzen, ich realisiere, dass ich dies auf die härtere Art und Weise tun kann. Ich bin nur ein Softwareentwickler, also bin ich neu dazu. Aber ich bin stärker mit C# oder Java. Aber ehrlich gesagt würde alles zu würdigen sein.

Antwort

0

Zuerst vermeiden Sie alles, es sei denn, es ist absolut unvermeidlich. Dies wird die gleiche Wirkung hat:

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

Da Sie mit mehr als einer Form zu tun haben, ich geneigt sein würde Schlagwörter zu verwenden. zum Beispiel eine Form wählen, dann ist dies auszuführen:

Sub Rückseiten() Mit ActiveWindow.Selection.ShapeRange (1) .Tags.Add "Layer", "Zurück" End With End Sub

Tun Sie dies für jedes Ihrer Back-Layer-Elemente, und identifizieren Sie dann Ihre anderen Layer-Formen ähnlich. Dann wird [Aircode Alarm!] Verwendet.

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 
Verwandte Themen