ShapeRange.Distribute Method (Excel)

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.

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

Concepts

ShapeRange Object Members

ShapeRange Object