Leer en inglés

Compartir a través de


Trabajar con formas (objetos de dibujo)

Las formas o los objetos de dibujo se representan mediante tres objetos diferentes:

Objeto Descripción
Colección Shapes Use para crear formas y recorrer en iteración todas las formas de una hoja de cálculo determinada.
Colección ShapeRange Use para modificar varias formas de la misma manera que trabaja con varias formas en la interfaz de usuario.
Shape (objeto) Use para dar formato o modificar una sola forma.

Establecer las propiedades de una forma

Muchas propiedades de formato de las formas no se establecen con propiedades que se apliquen directamente a los objetos Shape o ShapeRange. En su lugar, los atributos de forma relacionados se agrupan en objetos secundarios, como el objeto FillFormat, que contiene todas las propiedades relacionadas con el relleno de la forma, o el objeto LinkFormat, que contiene todas las propiedades que son exclusivas de los objetos OLE vinculados.

Para establecer las propiedades de una forma, en primer lugar debe devolver el objeto que representa el conjunto de atributos de forma relacionados y, a continuación, establecer las propiedades del objeto devuelto. Por ejemplo, la propiedad Fill se usa para devolver el objeto FillFormat y, a continuación, se establece la propiedad ForeColor del objeto FillFormat para establecer el color de primer plano del relleno de la forma especificada, como se muestra en el ejemplo siguiente.

VB
Worksheets(1).Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)

Aplicar una propiedad o un método a varias formas al mismo tiempo

En la interfaz de usuario puede realizar algunas operaciones con varias formas seleccionadas; por ejemplo, puede seleccionar varias formas y establecer los rellenos individuales a la vez. Existen otras operaciones que sólo pueden realizarse con una sola forma; por ejemplo, sólo puede modificar el texto de una forma si se ha seleccionado sólo una.

En Visual Basic existen dos maneras de aplicar propiedades y métodos a un conjunto de formas. Con estos dos modos es posible realizar cualquier operación que sea posible con una sola forma en un intervalo de formas, independientemente de que se pueda realizar la misma operación en la interfaz de usuario.

  • Si la operación funciona con varias formas seleccionadas en la interfaz de usuario, puede realizar la misma operación en Visual Basic creando una colección ShapeRange que contenga las formas con las que desea trabajar y aplicando las propiedades y los métodos correspondientes directamente a la colección ShapeRange.

  • Si la operación no funciona con varias formas seleccionadas en la interfaz de usuario, puede realizar la operación en Visual Basic recorriendo la colección Shapes o a través de una colección ShapeRange que contenga las formas con las que desee trabajar y aplicando las propiedades y los métodos correspondientes directamente a cada uno de los objetos Shape de la colección.

La mayoría de las propiedades y métodos que se pueden aplicar al objeto Shape y a la colección ShapeRange producen un error si se aplican a cierto tipo de formas. Por ejemplo, la propiedad TextFrame produce un error si se aplica a una forma que no puede contener texto.

Si no es positivo que cada una de las formas de una colección ShapeRange pueda tener aplicada una propiedad o un método determinados, no aplique la propiedad o el método a la colección ShapeRange . Si desea aplicar una de estas propiedades o uno de estos métodos a una colección de formas, debe recorrer la colección y comprobar cada una de las formas para asegurarse de que es un tipo de forma adecuado antes de aplicarle la propiedad o el método.

Creación de una colección ShapeRange que contiene todas las formas de una hoja

Para crear un objeto ShapeRange que contenga todos los objetos Shape de una hoja, seleccione las formas y, a continuación, utilice la propiedad ShapeRange para devolver un objeto ShapeRange que contenga las formas seleccionadas.

VB
Worksheets(1).Shapes.Select 
Set sr = Selection.ShapeRange

En Microsoft Excel, el argumento Index no es opcional para la propiedad Range de la colección Shapes , por lo que no puede usar esta propiedad sin un argumento para crear un objeto ShapeRange que contenga todas las formas de una colección Shapes .

Aplicar una propiedad o un método a una colección ShapeRange

Si es posible realizar una operación con varias formas seleccionadas en la interfaz de usuario al mismo tiempo, puede hacerlo mediante programación si crea una colección ShapeRange y, a continuación, le aplica las propiedades o los métodos correspondientes. El siguiente ejemplo crea en myDocument un rango de formas que contiene las formas denominadas "Big Star" y "Little Star" y les aplica un relleno degradado.

VB
Set myDocument = Worksheets(1) 
Set myRange = myDocument.Shapes.Range(Array("Big Star", _ 
 "Little Star")) 
myRange.Fill.PresetGradient _ 
 msoGradientHorizontal, 1, msoGradientBrass

Estas son instrucciones generales del comportamiento de las propiedades y métodos cuando se aplican a una colección ShapeRange.

  • Aplicar un método a una colección equivale a aplicar el método a cada uno de sus objetos Shape.

  • Establecer el valor de una propiedad de la colección es equivalente a establecer el valor de la propiedad de cada forma del intervalo.

  • Una propiedad de la colección que devuelve una constante devuelve el valor de la propiedad de una forma individual de la colección si todas las formas de ésta tienen el mismo valor para dicha propiedad. Si no todas las formas de la colección tienen el mismo valor para la propiedad, devuelve la constante "mixed".

  • Una propiedad de la colección que devuelve un tipo de datos simple, como Long, Single o String, devuelve el valor de la propiedad de una forma si todas las formas de la colección tienen el mismo valor para dicha propiedad.

  • El valor de algunas propiedades puede devolverse o establecerse sólo si hay exactamente una forma en la colección. Si la colección contiene más de una forma, se producirá un error en tiempo de ejecución. Normalmente ocurre al devolver o establecer propiedades cuando la acción equivalente en la interfaz de usuario sólo puede realizarse con una única forma, por ejemplo, acciones como la modificación del texto de una forma o de los puntos de una forma libre.

Estas instrucciones también pueden aplicarse cuando se establecen propiedades de formas que están agrupadas en objetos secundarios de la colección ShapeRange, como el objeto FillFormat. Si el objeto secundario representa operaciones que pueden realizarse en una selección de varios objetos en la interfaz de usuario, podrá devolver el objeto de una colección ShapeRange y establecer sus propiedades.

Por ejemplo, puede utilizar la propiedad Fill para devolver el objeto FillFormat que representa los rellenos de todas las formas de la colección ShapeRange. Al establecer las propiedades del objeto FillFormat se establecen las mismas propiedades para todas las formas de la colección ShapeRange.

Recorrer una colección Shapes o ShapeRange

Aunque no pueda realizar una operación a la vez en varias formas en la interfaz de usuario, seleccionándolas y utilizando un comando después, podrá realizar la acción equivalente mediante un programa en Visual Basic, ejecutando un bucle en las colecciones Shapes o ShapeRange que contengan las formas con las que desea trabajar, y aplicando las propiedades y métodos apropiados a cada objeto Shapes de la colección.

El siguiente ejemplo ejecuta un bucle en todas las formas de myDocument y cambia el color de primer plano de cada forma que sea una Autoforma.

VB
Set myDocument = Worksheets(1) 
For Each sh In myDocument.Shapes 
 If sh.Type = msoAutoShape Then 
 sh.Fill.ForeColor.RGB = RGB(255, 0, 0) 
 End If 
Next

El siguiente ejemplo crea una colección ShapeRange que contiene todas las formas actualmente seleccionadas en la ventana activa, y establece el color de primer plano de cada una de las formas.

VB
For Each sh in ActiveWindow.Selection.ShapeRange 
 sh.Fill.ForeColor.RGB = RGB(255, 0, 0) 
Next

Alineación, distribución y agrupación de formas en un objeto ShapeRange

Use los métodos Align y Distribute para colocar un conjunto de formas relativas entre sí o en relación con el documento que las contiene.

Utilice los métodos Group o Regroup para crear una forma agrupada única a partir de un conjunto de formas.

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.