选择范围内的形状并对齐它们

时间:2017-06-04 15:43:35

标签: vba

我想写一个函数,我可以选择一个形状,然后宏对齐所选形状的“短程”内的所有形状。

因此,我编写了以下代码,用于选择范围内的所有对象:

Sub Shape_Dimensions()

Dim L As Long
Dim T As Long
Dim H As Long
Dim W As Long

With ActiveWindow.Selection
    If .Type = ppSelectionShapes Then
        L = .ShapeRange.Left
        T = .ShapeRange.Top
        H = .ShapeRange.Height
        W = .ShapeRange.Width
    Else
        MsgBox "You have not selected an OBJECT in PowerPoint to dimension."
        Exit Sub
    End If
End With

 'Set range for selection
 TopRange = L + 30
 DownRange = T + H + 20
 'Left and right are 0 - 600

End Sub

现在我要采取的最后一步是选择顶部范围和向下范围内的所有形状,并将它们与所选框的顶部对齐。关于我应该如何进行的任何想法?

1 个答案:

答案 0 :(得分:0)

Sub Shape_Align()

    Dim L As Long
    Dim T As Long
    Dim H As Long, TopRange As Long, DownRange As Long
    Dim W As Long, s As Shape, n As String

    With ActiveWindow.Selection
        If .Type = ppSelectionShapes Then
            L = .ShapeRange.Left
            T = .ShapeRange.Top
            H = .ShapeRange.Height
            W = .ShapeRange.Width
            n = .ShapeRange.Name
        Else
            MsgBox "You have not selected an OBJECT in PowerPoint to dimension."
            Exit Sub
        End If
    End With

     'Set range for selection
     TopRange = L + 30
     DownRange = T + H + 20
     'Left and right are 0 - 600

     For Each s In ActiveWindow.View.Slide.Shapes
        If s.Name <> n Then
           'in scope for lining up?
           If Abs(s.Top - T) < 60 Then
               s.Top = T
           End If
        End If
     Next s

End Sub