VBA:左对齐和底对齐2个形状,然后删除背景中的形状

时间:2014-06-30 12:47:00

标签: vba powerpoint powerpoint-vba

我正在寻找一种方法,在powerpoint中选择的两个形状上执行以下操作。

  1. 取两个形状的前景中的形状(即前面更多的形状),左下角将其与背景中的形状对齐。
  2. 2。删除背景中的形状。

    到目前为止我所做的是底部和左侧对齐的操作,如下所示:

    Sub LeftandBottom_Align()
    
    ActiveWindow.Selection.ShapeRange.Align msoAlignLefts, False
    ActiveWindow.Selection.ShapeRange.Align msoAlignBottoms, False
    
    End Sub
    

    如何完成删除部分?

    一些基本的解释会很棒

2 个答案:

答案 0 :(得分:1)

您可以删除最后面的形状:

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

答案 1 :(得分:0)

您可以使用Shapes ZOrderPosition Property来确定背景中的哪种形状

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