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.