Compartir a través de


Objeto Shapes (Excel)

Colección de todos los objetos Shape de la hoja especificada.

Comentarios

Cada objeto Shape representa un objeto de la capa de dibujo, tal como una autoforma, una forma libre, un objeto OLE o una imagen.

Nota:

Si desea trabajar con un subconjunto de las formas de un documento (por ejemplo, para hacer algo solo con las Autoformas del documento o solo con las formas seleccionadas), debe construir una colección ShapeRange que contenga las formas con las que desea trabajar.

Ejemplo:

Utilice la propiedad Shapes del objeto Worksheet para devolver la colección Shapes . En el ejemplo siguiente se seleccionan todas las formas de myDocument.

Nota:

Si desea hacer algo (como eliminar o establecer una propiedad) en todas las formas de una hoja al mismo tiempo, seleccione todas las formas y, a continuación, use la propiedad ShapeRange en la selección para crear un objeto ShapeRange que contenga todas las formas de la hoja y, a continuación, aplicar la propiedad o el método adecuados al objeto ShapeRange .

Set myDocument = Worksheets(1) 
myDocument.Shapes.SelectAll

Use Shapes (index), donde index es el nombre o número de índice de la forma, para devolver un solo objeto Shape . En el ejemplo siguiente, se establece el relleno en una sobre predefinida para la forma uno en myDocument.

Set myDocument = Worksheets(1) 
myDocument.Shapes(1).Fill.PresetGradient _ 
 msoGradientHorizontal, 1, msoGradientBrass

Use Range (index), donde index es el nombre o número de índice de la forma o una matriz de nombres de formas o números de índice, para devolver una colección ShapeRange que representa un subconjunto de la colección Shapes . En el ejemplo siguiente, se establece el patrón de relleno para las formas una y tres de myDocument.

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

Un control ActiveX de una hoja tiene dos nombres: el nombre de la forma que contiene el control, visible en el cuadro Nombre al ver la hoja, y el nombre en código del control, presente en la celda a la izquierda de (Nombre) en la ventana Propiedades. La primera vez que agrega un control a una hoja, el nombre de la forma y el nombre de código son iguales. Sin embargo, si cambia el nombre de la forma o el nombre del código, el otro no se cambia automáticamente para que coincida.

El nombre de código de un control se usa en los nombres de sus procedimientos de evento. Sin embargo, cuando devuelve un control de la colección Shapes u OLEObjects para una hoja, debe usar el nombre de la forma no el nombre de código para hacer referencia al control mediante su nombre. Por ejemplo, supongamos que agrega una casilla a una hoja y que tanto el nombre de la forma predeterminado y el nombre de código predeterminado son CheckBox1. Si después cambia el nombre de código del control escribiendo chkFinished junto a (Name) en la ventana Propiedades, debe usar chkFinished en los nombres de procedimiento de evento, pero tendrá que seguir usando CheckBox1 para obtener el control de la colección Shapes u OLEObject, tal como se muestra en el ejemplo siguiente.

Private Sub chkFinished_Click() 
 ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1 
End Sub

Métodos

Propiedades

Vea también

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.