Agregar autorformas de manera automática en Excel

Estoy trabajando en un archivo de Excel para la U (estudio logística) y me gustaría poder crear en el formas (Autoforma 2D) de manera simultanea partiendo desde un listado con medidas en Excel. Me explico:

Tengo un listado de A1 al A150 con medidas para formar con cada fila un cuadrado; por ejemplo: 10x10x10x10 cm (y no todas tienen la misma medida). ¿Hay alguna manera con macros de crear las formar simultáneamente sin tener que hacerlas una por una?

1 respuesta

Respuesta

[Hola Carol. Aquí te dejo un ejemplo.

'INSERTA EN LA HOJA1, UNA FORMA CUADRADA DE COLOR ROJO
'Ajusta a tu gusto las medidas y el color
Sub FormaCuadrada()
Set myDocument = Worksheets(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, _
 144, 144, 72, 72)
 .Name = "Red Square"
 .Fill.ForeColor.RGB = RGB(255, 0, 0)
 .Line.DashStyle = msoLineDashDot
End With
End Sub
'Inserta una línea diagonal
Sub LineaDiagonal()
Set myDocument = Worksheets(1)
With myDocument.Shapes.AddLine(10, 10, 250, 250).Line
 .DashStyle = msoLineDashDotDot
 .ForeColor.RGB = RGB(50, 0, 128)
End With
End Sub

Salu2 Carlos Arrocha

Hola Carlos,

Muchas gracias por tu respuesta.

Veo que en el With describes las medidas "(With myDocument.Shapes.AddShape(msoShapeRectangle, _ 144, 144, 72, 72)"

Hay alguna manera que se tomen estas medidas desde la hoja de trabajo, ya que la idea es que se tomen las medidas de cada una de las formas automáticas sin tener que hacerlo de manera manual.

Adjunto encontrás una imagen del archivo ya que es más fácil de entender al verlo.

Pues la verdad, no se si se puede hacer. Voy a intentar unas pruebas y te comento algo.

[Hola Carol. El archivo que has subido no se puede ampliar y lo veo ni con lupa. Te dejo una manera de que la forma tome las medidas de la hoja, pero de unas celdas concretas. Debes hacer las modificaciones que creas oportunas.

Sub MedidasFormas()
    'Cambia la longitud de la forma 1 de la hoja activa
    ActiveSheet.Shapes(1).Select
    Selection.ShapeRange.Top = Hoja1.Range("A1").Value
    Selection.ShapeRange.Left = Hoja1.Range("A2").Value
    Selection.ShapeRange.Height = Hoja1.Range("A3").Value
    Selection.ShapeRange.Width = Hoja1.Range("A4").Value
End Sub

Salu2 Carlos Arrocha

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas