Можно ли переместить все на слайде на заданное расстояние (в дюймах) в одном направлении в PowerPoint с помощью VBA? - PullRequest
0 голосов
/ 06 марта 2020

Я хочу переместить все на слайде на заданное расстояние (в дюймах) в одном направлении. Например, все, что на слайдах 1 (нечетные), я хочу переместить на 1 дюйм вправо, а слайды 2 (четные) - на 1 дюйм влево. С этим повторяется на протяжении всей презентации. Это возможно? Я вроде как до сих пор это решал, но это не работает ... Спасибо, Джей

    Sub Button10()
Dim i As Long

With ActivePresentation.Slides

For i = 1 To .count
      If i Mod 2 = 1 Then
        MoveRight
      End If
      If i Mod 2 = 2 Then
        MoveLeft
      End If
    Next i

End With

MsgBox "Completed!", vbExclamation

End Sub

Sub MoveRight()

Dim i As Long

With ActivePresentation
        For Each Slide In .Slides
        For Each Shape In Slide.Shapes
                With Shape
            Shape.Left = Shape.Left + (1.5 * 72)
            End With
        Next
        Next
        End With

End Sub

Sub MoveLeft()

With ActivePresentation
        For Each Slide In .Slides
        For Each Shape In Slide.Shapes
                With Shape
            Shape.Left = Shape.Left - (1.5 * 72)
            End With
        Next
        Next
        End With

End Sub

1 Ответ

3 голосов
/ 06 марта 2020

Этот код сделает это. Оператор Mod делит номер индекса слайда на 2 и возвращает остаток. Когда остаток равен 1, это слайд с нечетным номером, когда остаток равен 0, он четный:

Sub MoveShapes()
    Dim oSlide As Slide
    Dim oShape As Shape

    For Each oSlide In ActivePresentation.Slides
        If oSlide.SlideIndex Mod 2 = 1 Then 'Odd numbered slide
            For Each oShape In oSlide.Shapes
                oShape.Left = oShape.Left + 72
            Next oShape
        Else
            For Each oShape In oSlide.Shapes
                oShape.Left = oShape.Left - 72
            Next oShape
        End If
    Next oSlide
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...