Excel VBA 図形(オートシェイプ)の塗りつぶしを変更する方法

図形作成/操作

VBAで図形(オートシェイプ)の塗りつぶしの色を変更する方法をご説明します。

デフォルトの色のままでは視覚的にも微妙なので、位置の指定やサイズの変更に併せて、ぜひ塗りつぶしの色は変更方法を覚えてみてください。

その他の図形の操作については次の記事をご覧ください。

1.図形の塗りつぶしを変更する

図形の塗りつぶしを変更する方法です。

図形の塗りつぶしは、「Fillプロパティ」で操作します。

次のように記述します。

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

「RGB(255, 0, 0)」は赤色です。

RGBとは「」「」「」の組み合わせで色を設定する関数です。

それぞれ0~255の数値で指定します。

塗りつぶしをするにはこれだけですが、明確に説明すると少し複雑になります。

Shapeオブジェクト」の「FillFormatオブジェクト」の「ColorFormatオブジェクト」を使うと、塗りつぶし色を変更できます。

Fillプロパティ」で「FillFormatオブジェクト」を取得し、「ForeColorプロパティ」で「ColorFormatオブジェクト」を取得しています。

上記の記述方法には出てこないオブジェクトが多数出てきますので、オブジェクト式をしっかり理解していないと混乱します。

2.図形の塗りつぶしのサンプルコード

ワークシートに次の3つように図形を操作します。

図形を直接指定して変更する

上記の3つある図形の色をそれぞれ「赤、黄色、青」に変更します。

Sub Sample1()

With ActiveSheet
    
    .Shapes(1).Fill.ForeColor.RGB = RGB(255, 0, 0)
    .Shapes(2).Fill.ForeColor.RGB = RGB(255, 255, 0)
    .Shapes(3).Fill.ForeColor.RGB = RGB(0, 112, 192)
    
End With

End Sub
ループで図形を取得して変更する

上記の3つの図形をループして全て赤色に変更します。

ワークシート上の図形の数は「Shapes.Count」で取得出来ます。

Sub Sample2()

Dim i As Long

With ActiveSheet

For i = 1 To .Shapes.Count
    
    .Shapes(i).Fill.ForeColor.RGB = RGB(255, 0, 0)
    
Next i
    
End With

End Sub
タイトルとURLをコピーしました