Powerpoint 2016年VBA图片

我对这一切有点新鲜感,有一个项目让我有点头脑发热,想知道我能否得到一点指导。

我会为你设置场景。 我有一个权力点,它有3层图片,他们都是卡。 背后是我的地方持有只是随机卡和价值。 第二层是Ace的一层,最后一层是卡背。 我有20套这3个图像我已经设置了一个很好的小旋转过渡,所以你点击他们旋转卡的触发器,他们的王牌将每次显示,因为它占位符之前。

这个想法是我有一个macros,这是我的重置,它会推动他们所有的后面使用ZOrder msoSendToBack。

第二个macros将随机带3个ace向前3次,所以它们与该层内联,然后需要首先显示。 现在我面对的问题是VBA代码。

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

这是我通过一般查找find的代码。

我会感谢任何指导或build议,我意识到我可能正在做这个更难的方法。 我只是一名软件工程专业的学生,​​对此我毫无新意。 但是用C#或者Java更强大一些。 但是,诚实地说,任何事情都会变得沉闷。

首先,避免select任何东西,除非完全不可避免。 这将有相同的效果:

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

既然你必须处理多个形状,我倾向于使用标签。 例如,select一个形状,然后运行这个:

Sub BackLayer()With ActiveWindow.Selection.ShapeRange(1).Tags.Add“Layer”,“Back”End With End Sub

对每个背层项目执行此操作,然后同样确定其他图层形状。 然后在使用中,[aircode alert!]

 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