Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » AddLineで色を変更するには

動作検証バージョン:64bit Windows 10 Pro + 32bit Excel(バージョン2205 ビルド15225.20204 Microsoft Store)

Excel.Shapes.AddLIne

「vba ActiveSheet.Shapes.AddLine 色」
といった検索キーワードで時折アクセスがあります。

Excel VBAのShapes.AddLineメソッドを使って直線を挿入するときに、直線の色を変更するにはどうすればいいのかを探していらしたのでしょう。

AddLineして色を設定するサンプルマクロ

以下のExcelマクロをステップ実行すると、アクティブシートに直線が挿入され、色が黄色になる様子を観察できます。

Sub AddLineして色を変更する()
 Dim shp As Shape
 Set shp = ActiveSheet.Shapes.AddLine( _
  BeginX:=0, _
  BeginY:=25, _
  EndX:=200, _
  EndY:=100)
 shp.Line.ForeColor.RGB = RGB(255, 255, 0)
End Sub

拙著『理解するExcel VBA/図形操作の基本』の、「5-2. AddLineで直線を挿入する」ではShapes.AddLineメソッドを使った以下のコードを解説しています。

Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddLine( _
 BeginX:=0, _
 BeginY:=25, _
 EndX:=200, _
 EndY:=100)
shp.Line.Weight = 6

また、「5-3. AddShapeで図形を挿入する」では、Shapes.AddShapeメソッドを使った以下のコードを解説しています。

Dim shp As Shape
Set shp = ActiveSheet.Shapes.AddShape( _
 Type:=msoShapeHeart, _
 Left:=25, _
 Top:=25, _
 Width:=75, _
 Height:=75)
shp.Fill.ForeColor.RGB = RGB(255, 0, 0)
shp.Line.Weight = 6
shp.Line.ForeColor.RGB = RGB(255, 255, 0)

上記のExcelマクロは、この2つのコードを組み合わせたものでもあります。

AddLineで色を変更するには戻り値のShapeを利用

オブジェクトブラウザーの詳細ペインで確認できるとおり、

Excel.Shapes.AddLIne

ShapesコレクションのAddLineメソッドには始点の座標(BeginX・BeginY)と終点の座標(EndX・EndY)しか指定できません。

そのため、Shepes.AddLineメソッドで直線の挿入を行ってから、

Set shp = ActiveSheet.Shapes.AddLine( _
 BeginX:=0, _
 BeginY:=25, _
 EndX:=200, _
 EndY:=100)

戻り値である直線を表すShapeオブジェクトを経由して、色を変更しています。

shp.Line.ForeColor.RGB = RGB(255, 255, 0)

この色を変更する部分「shp.Line.ForeColor.RGB」は、プロパティの名前と取得できるオブジェクトの名前とが一致していない部分がありますから、

Shapeオブジェクト
 └ LineFormatオブジェクト(Shape.Lineプロパティで取得)
   └ ColorFormatオブジェクト(LineFormat.ForeColorプロパティで取得)
     └ RGBプロパティ

丁寧に読解しておくことをおすすめします

オブジェクト変数を使わずに、以下のような実質的に1行のコードでも直線を挿入して色を変更できますけれど、

ActiveSheet.Shapes.AddLine( _
    BeginX:=0, _
    BeginY:=25, _
    EndX:=200, _
    EndY:=100) _
        .Line.ForeColor.RGB = RGB(255, 255, 0)

さすがにオブジェクト変数を使うほうがイイでしょう。

最終更新日時:2022-07-12 15:11

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » AddLineで色を変更するには

「Shapesコレクション・Shapeオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.