Vba 如何通过一个代码在所有幻灯片中执行某些操作?

Vba 如何通过一个代码在所有幻灯片中执行某些操作?,vba,Vba,我使用此代码,您可以看到它仅适用于幻灯片1: Sub o_c_LTab(shape As shape) Lt = ActivePresentation.Slides(1).Shapes("LT").Left If Lt = -175 Then Do DoEvents Lt = Lt + 25 ActivePresentation.Slides(1).Shapes("LT").Left = Lt ActivePresentation.Sl

我使用此代码,您可以看到它仅适用于幻灯片1:

 Sub o_c_LTab(shape As shape)

Lt = ActivePresentation.Slides(1).Shapes("LT").Left
If Lt = -175 Then
    Do
    DoEvents
    Lt = Lt + 25
        ActivePresentation.Slides(1).Shapes("LT").Left = Lt
        ActivePresentation.Slides(1).Shapes("LT_handle").Left = ActivePresentation.Slides(1).Shapes("LT_handle").Left + 25
        ActivePresentation.Slides(1).Shapes("1").Left = ActivePresentation.Slides(1).Shapes("1").Left + 25
        ActivePresentation.Slides(1).Shapes("2").Left = ActivePresentation.Slides(1).Shapes("2").Left + 25
        ActivePresentation.Slides(1).Shapes("3").Left = ActivePresentation.Slides(1).Shapes("3").Left + 25
        ActivePresentation.Slides(1).Shapes("4").Left = ActivePresentation.Slides(1).Shapes("4").Left + 25
        ActivePresentation.Slides(1).Shapes("5").Left = ActivePresentation.Slides(1).Shapes("5").Left + 25

    timeout (0.01)
    Loop Until Lt = 0
ElseIf Lt = 0 Then
    Do
    DoEvents
    Lt = Lt - 25
        ActivePresentation.Slides(1).Shapes("LT").Left = Lt
        ActivePresentation.Slides(1).Shapes("LT_handle").Left = ActivePresentation.Slides(1).Shapes("LT_handle").Left - 25
        ActivePresentation.Slides(1).Shapes("1").Left = ActivePresentation.Slides(1).Shapes("1").Left - 25
        ActivePresentation.Slides(1).Shapes("2").Left = ActivePresentation.Slides(1).Shapes("2").Left - 25
        ActivePresentation.Slides(1).Shapes("3").Left = ActivePresentation.Slides(1).Shapes("3").Left - 25
        ActivePresentation.Slides(1).Shapes("4").Left = ActivePresentation.Slides(1).Shapes("4").Left - 25
        ActivePresentation.Slides(1).Shapes("5").Left = ActivePresentation.Slides(1).Shapes("5").Left - 25
    timeout (0.01)
    Loop Until Lt = -175
End If

End Sub


Sub timeout(duration_ms As Double)
    Start_Time = Timer
    Do
    DoEvents
    Loop Until (Timer - Start_Time) >= duration_ms
End Sub

我在200张幻灯片中有这些形状,我应该写200次,我怎么能只用一个代码在所有幻灯片中做到这一点呢?

每张
幻灯片都将是
幻灯片
集合中的一个项目。 您可以使用以下命令单步浏览集合中的每个项目:

Sub Test()

    Dim sl As Slide

    For Each sl In ActivePresentation.Slides
        Debug.Print sl.Name
    Next sl

End Sub

然后不用
ActivePresentation.Slides(1).Shapes(“LT”)
你可以用
sl.Shapes(“LT”)

为什么不做一个循环?代替幻灯片(1)
put
Slide(i)