「vba ActiveSheet.Shapes.AddLine 色」
といった検索キーワードで時折アクセスがあります。
Excel VBAのShapes.AddLineメソッドを使って直線を挿入するときに、直線の色を変更するにはどうすればいいのかを探していらしたのでしょう。
AddLineして色を設定するサンプルマクロ
以下のExcelマクロをステップ実行すると、アクティブシートに直線が挿入され、色が黄色になる様子を観察できます。
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を利用
オブジェクトブラウザーの詳細ペインで確認できるとおり、
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
- Newer:CurrentRegionの戻り値は?
- Older:Word VBAのSelection.Charactersとは
Home » エクセルマクロ・Excel VBAの使い方 » Shapesコレクション・Shapeオブジェクト » AddLineで色を変更するには