Compartir a través de


Método Shapes.Range (Publisher)

Devuelve un objeto ShapeRange que representa un subconjunto de las formas de una colección Shapes.

Sintaxis

expresión. Intervalo (índice)

expresión Variable que representa un objeto Shapes.

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
Index Obligatorio Variant Las formas individuales que se incluirán en el intervalo. Puede ser un entero que especifica el número de índice de la forma, una cadena que especifica el nombre de la forma o una matriz que contenga números enteros o cadenas. Si se omite Index , el método Range devuelve todos los objetos de la colección especificada.

Valor devuelto

ShapeRange

Ejemplo

Para especificar una matriz de enteros o cadenas para Index, puede usar la función Array. Por ejemplo, la siguiente instrucción devuelve dos formas especificadas por nombre.

Dim arrShapes As Variant 
Dim shpRange As ShapeRange 
 
Set arrShapes = Array("Oval 4", "Rectangle 5") 
Set shpRange = ActiveDocument.Pages(1) _ 
 .Shapes.Range(arrShapes)

En este ejemplo se establece la trama de relleno de las formas uno y tres de la publicación activa.

ActiveDocument.Pages(1).Shapes.Range(Array(1, 3)).Fill _ 
 .Patterned msoPatternHorizontalBrick

En este ejemplo se establece la trama de relleno de las formas "Oval 4" y "Rectangle 5" de la primera página.

Dim arrShapes As Variant 
Dim shpRange As ShapeRange 
 
arrShapes = Array("Oval 4", "Rectangle 5") 
 
Set shpRange = ActiveDocument.Pages(1).Shapes.Range(arrShapes) 
 
shpRange.Fill.Patterned msoPatternHorizontalBrick

En este ejemplo se establece la trama de relleno de todas las formas de la primera página.

ActiveDocument.Pages(1).Shapes _ 
 .Range.Fill.Patterned msoPatternHorizontalBrick

En este ejemplo se establece la trama de relleno de la forma uno de la primera página.

Dim shpRange As ShapeRange 
 
Set shpRange = ActiveDocument.Pages(1).Shapes.Range(1) 
 
shpRange.Fill.Patterned msoPatternHorizontalBrick

En este ejemplo se crea una matriz que contiene todas las Autoformas de la primera página, se utiliza una matriz para definir un intervalo de formas y, a continuación, se distribuyen horizontalmente todas las formas de dicho intervalo.

Dim numShapes As Long 
Dim numAutoShapes As Long 
Dim autoShpArray As Variant 
Dim intLoop As Integer 
Dim shpRange As ShapeRange 
 
With ActiveDocument.Pages(1).Shapes 
 
 numShapes = .Count 
 If numShapes > 1 Then 
 
 numAutoShapes = 0 
 ReDim autoShpArray(1 To numShapes) 
 
 For intLoop = 1 To numShapes 
 If .Item(intLoop).Type = msoAutoShape Then 
 numAutoShapes = numAutoShapes + 1 
 autoShpArray(numAutoShapes) = .Item(intLoop).Name 
 End If 
 Next 
 
 If numAutoShapes > 1 Then 
 ReDim Preserve autoShpArray(1 To numAutoShapes) 
 Set shpRange = .Range(autoShpArray) 
 shpRange.Distribute _ 
 DistributeCmd:=msoDistributeHorizontally, _ 
 RelativeTo:=False 
 End If 
 
 End If 
 
End With

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.