VBA: слева и снизу выровнять 2 фигуры, затем удалить фигуру в thebackground


Я ищу способ выполнить следующую операцию над двумя фигурами, которые выбраны в powerpoint.

    Возьмите фигуру на переднем плане (то есть фигуру, которая больше спереди) из двух фигур и слева и снизу выровняйте ее с той, которая находится на заднем плане.

2. Удалите фигуру на заднем плане.

То, что я получил до сих пор, - это операция для нижнего и левого выравнивания, которая выглядит следующим образом:

Sub LeftandBottom_Align()

ActiveWindow.Selection.ShapeRange.Align msoAlignLefts, False
ActiveWindow.Selection.ShapeRange.Align msoAlignBottoms, False

End Sub

Как мне это сделать сделать удаление-часть сделана?

Немного основного объяснения было бы здорово

2 2

2 ответа:

Вы можете удалить самую заднюю фигуру следующим образом:

Dim oBackShape As Shape


With ActiveWindow.Selection

    ' Get a reference to the rearmost of the two selected shapes
    ' so you can use it later to delete the shape
    If .ShapeRange(1).ZOrderPosition > .ShapeRange(2).ZOrderPosition Then
        Set oBackShape = .ShapeRange(2)
    Else
        Set oBackShape = .ShapeRange(1)
    End If

    ' Align the shapes
    ' .Align may not always work the way you'd expect it to
    ' so if not, ask
    .ShapeRange.Align msoAlignLefts, False
    .ShapeRange.Align msoAlignBottoms, False


End With

    ' Delete the rearmost shape
    oBackShape.Delete

Вы можете использовать свойство Shapes ZOrderPosition, чтобы определить, какая фигура находится на заднем плане

Sub LeftandBottom_Align()

ActiveWindow.Selection.ShapeRange.Align msoAlignLefts, False
ActiveWindow.Selection.ShapeRange.Align msoAlignBottoms, False

Dim i As Integer
i = 2 'Assuming two shapes

 While i >= 1
 With ActiveWindow.Selection.ShapeRange(i)

    If (.ZOrderPosition = 1) Then
        .Delete
        Exit Sub
    End If

 i = i - 1

 End With
 Wend

End Sub