This documentation is archived and is not being maintained.

Distribute Method

Office 2003

Evenly distributes the shapes in the specified range of shapes. You can specify whether you want to distribute the shapes horizontally or vertically and whether you want to distribute them over the entire slide or just over the space they originally occupy.

expression.Distribute(DistributeCmd, RelativeTo)

expression    Required. An expression that returns a ShapeRange object.

MsoDistributeCmd can be one of these MsoDistributeCmd constants.

MsoTriState can be one of these MsoTriState constants.
msoFalse Distributes the shapes within the horizontal or vertical space that the range of shapes originally occupies.
msoTrue Distributes the shapes evenly over the entire horizontal or vertical space on the slide.


This example defines a shape range that contains all the AutoShapes on the myDocument and then horizontally distributes the shapes in this range.

Set myDocument = ActivePresentation.Slides(1)
With myDocument.Shapes
    numShapes = .Count
    If numShapes > 1 Then
        numAutoShapes = 0
        ReDim autoShpArray(1 To numShapes)
        For i = 1 To numShapes
            If .Item(i).Type = msoAutoShape Then
                numAutoShapes = numAutoShapes + 1
                autoShpArray(numAutoShapes) = .Item(i).Name
            End If
        If numAutoShapes > 1 Then
            ReDim Preserve autoShpArray(1 To numAutoShapes)
            Set asRange = .Range(autoShpArray)
            asRange.Distribute msoDistributeHorizontally, msoFalse
        End If
    End If
End With

See Also | Align Method