Compartilhar via


Método ShapeRange.Distribute (Publisher)

Distribui igualmente as formas no intervalo de formas especificado.

Sintaxe

expressão. Distribuir (DistributeCmd, RelativeTo)

Expressão Uma variável que representa um objeto ShapeRange .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
DistributeCmd Obrigatório MsoDistributeCmd Especifica se as formas devem ser distribuídas horizontal ou verticalmente. Pode ser uma das constantes MsoDistributeCmd declaradas na biblioteca de tipos do Microsoft Office.
RelativeTo Obrigatório MsoTriState Especifica se as formas devem ser distribuídas igualmente por todo o espaço horizontal ou vertical na página ou dentro do espaço horizontal ou vertical que o intervalo de formas ocupa originalmente.

Comentários

As formas são distribuídas de maneira que haja uma quantidade igual de espaço entre uma forma e a próxima. Se as formas forem tão grandes que se sobreponham quando forem distribuídas pelo espaço disponível, serão distribuídas de maneira que haja uma quantidade igual de sobreposição entre uma forma e a próxima.

O parâmetro RelativeTo pode ser uma das constantes MsoTriState declaradas na biblioteca de tipos do Microsoft Office e mostradas na tabela a seguir.

Constante Descrição
msoFalse Distribui as formas dentro do espaço horizontal ou vertical que o intervalo de formas ocupa originalmente.
msoTrue Distribui as formas uniformemente sobre todo o espaço horizontal ou vertical na página.

Quando RelativeTo é msoTrue, as formas são distribuídas para que a distância entre as duas formas externas e as bordas da página seja a mesma que a distância entre uma forma e outra. Se as formas devem se sobrepõem, as duas formas externas são movidas para as bordas da página.

Quando RelativeTo é msoFalse, as duas formas externas não são movidas; somente as posições das formas internas são ajustadas.

A ordem z das formas não é afetada por este método.

Exemplo

Este exemplo define um intervalo de formas que contém todos os AutoShapes na primeira página da publicação ativa e, em seguida, distribui horizontalmente as formas nesse intervalo.

' Number of shapes on the page. 
Dim intShapes As Integer 
' Number of AutoShapes on the page. 
Dim intAutoShapes As Integer 
' An array of the names of the AutoShapes. 
Dim arrAutoShapes() As String 
' A looping variable. 
Dim shpLoop As Shape 
' A placeholder variable for the range containing AutoShapes. 
Dim shpRange As ShapeRange 
 
With ActiveDocument.Pages(1).Shapes 
 ' Count all the shapes on the page. 
 intShapes = .Count 
 
 ' Proceed only if there's at least one shape. 
 If intShapes > 1 Then 
 intAutoShapes = 0 
 ReDim arrAutoShapes(1 To intShapes) 
 
 ' Loop through the shapes on the page and add the names 
 ' of any AutoShapes to an array. 
 For Each shpLoop In ActiveDocument.Pages(1).Shapes 
 If shpLoop.Type = msoAutoShape Then 
 intAutoShapes = intAutoShapes + 1 
 arrAutoShapes(intAutoShapes) = shpLoop.Name 
 End If 
 Next shpLoop 
 
 ' Proceed only if there's at least one AutoShape. 
 If intAutoShapes > 1 Then 
 ReDim Preserve arrAutoShapes(1 To intAutoShapes) 
 
 ' Create a shape range containing all the AutoShapes. 
 Set shpRange = .Range(Index:=arrAutoShapes) 
 
 ' Distribute the AutoShapes horizontally 
 ' in the space they already occupy. 
 shpRange.Distribute _ 
 DistributeCmd:=msoDistributeHorizontally, RelativeTo:=msoFalse 
 End If 
 End If 
End With 

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.