Como cambiar el color de las líneas de varias formas a la vez insertadas en una hoja de Excel.

Como ya en otras ocasiones me habéis solucionado mis problemas, apelo nuevamente a vuestra sabiduría.

Tengo unas rutinas en visual básic que me dibuja rectángulos y líneas con formas en una hoja de cálculo, hasta ahí perfecto, pero me las dibuja en un color azul claro, pues bien si yo pudiera después de dibujarlas cambiarles el color a negro a todas a la ves, me acortaría mi procedimiento considerablemente, os mando una muestra de lo que hago para cada línea o rectángulo.

ActiveSheet. Shapes. AddShape(msoShapeRectangle, 60, 388, 430, 252).Select 'RECTANGULO EXTERIOR
            Selection.ShapeRange.Fill.Visible = msoFalse
            With Selection.ShapeRange.Line
               .Visible = msoTrue
               .ForeColor.ObjectThemeColor = msoThemeColorText1
               .Weight = 0.9
            End With
            ActiveSheet. Shapes. AddConnector(msoConnectorStraight, 478, 400, 490, 388).Select 'INCLINADA SUP DERECHA
            With Selection.ShapeRange.Line
               .Visible = msoTrue
               .ForeColor.ObjectThemeColor = msoThemeColorText1
               .Weight = 0.9
            End With

Seria fantástico que pudiera hacer todo el dibujo solamente con la primera línea de coordenadas y después mediante un rango ya que los dibujos están siempre el mismo sitio las pudiera cambiar de golpe.

Nota: entre dibujo y dibujo dispongo de una rutina que me borra el anterior.

Respuesta
1

La siguiente macro te cambia el color a todas las formas que tengas en la hoja activa:

Sub colorFormas()
'x Elsamatilde
For Each sh In ActiveSheet.Shapes
sh.Select
    With Selection.ShapeRange.Line
        .Visible = msoTrue
        .ForeColor.RGB = RGB(0, 0, 0)  'negro
        .Transparency = 0
    End With
Next sh
End Sub

Para no tener que ejecutar esto luego de dibujarlas, debieras ajustar la macro que dibuja las formas asignando el color allí mismo:

ActiveSheet. Shapes. AddShape(msoShapeRectangle, 60, 388, 430, 252).Select 'RECTANGULO EXTERIOR
Selection.ShapeRange.Fill.Visible = msoFalse
With Selection.ShapeRange.Line
.Visible = msoTrue
.ForeColor.RGB = RGB(0, 0, 0)     'modificar esta línea
.Weight = 0.9
End With

¡Gracias! Elsa Funciona perfectamente ahora solo tengo que integrarla en mi procedimiento, es un alivio poder contar con vosotros.

Agradecido:Manuel Cazorla

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas