Compartir vía


Propiedad Shapes.Range (Excel)

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 Formas individuales que se incluirán en el rango. Puede ser un número entero que especifique el número de índice de la forma, una cadena que especifique el nombre de la forma o una matriz que contenga tanto números enteros como cadenas.

Comentarios

Aunque puede usar la propiedad Range para devolver cualquier número de formas, es más sencillo usar el método Item si solo desea devolver un único miembro de la colección. Por ejemplo, Shapes(1) es más sencillo que Shapes.Range(1).

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 arShapes() As Variant 
 Dim objRange As Object 
 arShapes = Array("Oval 4", "Rectangle 5") 
 Set objRange = ActiveSheet.Shapes.Range(arShapes)

En Microsoft Excel, no se puede usar esta propiedad para devolver un objeto ShapeRange que contenga todos los objetos Shape de una hoja de cálculo. En su lugar, use el código siguiente.

 Worksheets(1).Shapes.SelectAll ' select all shapes set sr = Selection.ShapeRange ' create ShapeRange

Ejemplo:

En este ejemplo se establece la trama de relleno de las formas uno y tres de myDocument.

Set myDocument = Worksheets(1) 
myDocument.Shapes.Range(Array(1, 3)) _ 
 .Fill.Patterned msoPatternHorizontalBrick

En este ejemplo se establece el patrón de relleno de las formas denominadas Oval 4 y Rectangle 5 en myDocument.

Dim arShapes() As Variant 
Dim objRange As Object 
Set myDocument = Worksheets(1) 
arShapes = Array("Oval 4", "Rectangle 5") 
Set objRange = myDocument.Shapes.Range(arShapes) 
objRange.Fill.Patterned msoPatternHorizontalBrick

En este ejemplo se establece la trama de relleno de la forma uno de myDocument.

Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(1) 
myRange.Fill.Patterned msoPatternHorizontalBrick

En este ejemplo se crea una matriz que contiene todas las autoformas de myDocument, se usa dicha matriz para definir el rango de formas y, a continuación, se distribuyen horizontalmente todas las formas del rango.

Set myDocument = Worksheets(1) 
With myDocument.Shapes 
 numShapes = .Count 
 If numShapes > 1 Then 
 numAutoShapes = 1 
 ReDim autoShpArray(1 To numShapes) 
 For i = 1 To numShapes 
 If .Item(i).Type = msoAutoShape Then 
 autoShpArray(numAutoShapes) = .Item(i).Name 
 numAutoShapes = numAutoShapes + 1 
 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

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.