VBA: слева и снизу выровнять 2 фигуры, затем удалить фигуру в thebackground
Я ищу способ выполнить следующую операцию над двумя фигурами, которые выбраны в powerpoint.
-
Возьмите фигуру на переднем плане (то есть фигуру, которая больше спереди) из двух фигур и слева и снизу выровняйте ее с той, которая находится на заднем плане.
2. Удалите фигуру на заднем плане.
То, что я получил до сих пор, - это операция для нижнего и левого выравнивания, которая выглядит следующим образом:
Sub LeftandBottom_Align()
ActiveWindow.Selection.ShapeRange.Align msoAlignLefts, False
ActiveWindow.Selection.ShapeRange.Align msoAlignBottoms, False
End Sub
Как мне это сделать сделать удаление-часть сделана?
Немного основного объяснения было бы здорово
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