Share via


ShapeRange.Distribute Method

Excel Developer Reference

Horizontally or vertically distributes the shapes in the specified range of shapes.

Syntax

expression.Distribute(DistributeCmd, RelativeTo)

expression   A variable that represents a ShapeRange object.

Parameters

Name Required/Optional Data Type Description
DistributeCmd Required MsoDistributeCmd Specifies whether shapes in the range are to be distributed horizontally or vertically.
RelativeTo Required MsoTriState Not used in Microsoft Excel. Must be False.

Example

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

Visual Basic for Applications
  Set myDocument = Worksheets(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
        Next
        If numAutoShapes > 1 Then
            ReDim Preserve autoShpArray(1 To numAutoShapes)
            Set asRange = .Range(autoShpArray)
            asRange.Distribute msoDistributeHorizontally, False
        End If
    End If
End With

See Also