図形の枠線の色はLine.ForeColor、塗りつぶしの色はFill.ForeColorから変更します。図形に対しShapeRangeまたはRangeプロパティを使い、ShapeRangeコレクションを取得することで変更可能です。
線の色の変更
図形の線の色を変更
Shapeオブジェクト(またはShapeRangeコレクション).Line.ForeColor.RGB = RGB(R,G,B)
Shapeオブジェクト(またはShapeRangeコレクション).Line.ForeColor.SchemeColor = 色番号
Shapeオブジェクト(またはShapeRangeコレクション).Line.ForeColor.RGB = RGB(R,G,B)
Shapeオブジェクト(またはShapeRangeコレクション).Line.ForeColor.SchemeColor = 色番号
![vba forecolor 図形の色1](https://sunagitsune.com/wp-content/uploads/2021/10/0bc528f2c301181c76c16e8d84b51120.png)
図形「maru」の線の色を変えてみたいと思います。
' vba
' 方法1
ActiveSheet.Shapes(1).Line.ForeColor.RGB = RGB(255, 0, 0)
' 方法2
ActiveSheet.Shapes.Range("maru").Select
Selection.ShapeRange.Line.ForeColor.RGB = RGB(255, 0, 0)
色を変更するには、Line.ForeColor.RGBから直接値を指定します。
プロパティを変更したいので、Shapesコレクションからは行えません。Shapeオブジェクトを取得するか、一度図形を選択して、Selection.ShapeRangeから指定するか、
プロパティを変更したいので、Shapesコレクションからは行えません。Shapeオブジェクトを取得するか、一度図形を選択して、Selection.ShapeRangeから指定するか、
' vba
' 方法3
ActiveSheet.Shapes.Range(Array("maru")).Line.ForeColor.RGB = RGB(255, 0, 0)
Range(Array())の中で図形を指定して色を変更します。
図形の選択について詳しくは別記事参照。
図形の選択について詳しくは別記事参照。
![vba forecolor 図形の色2](https://sunagitsune.com/wp-content/uploads/2021/10/67803e17811e2eac588aeeafc82da9c1.png)
実行結果です。
' vba
ActiveSheet.Shapes.Range(Array("maru")).Line.ForeColor.SchemeColor = 3
色はSchemeColorというプロパティを使って変更することもできます。セルの色変更で使うColorIndexとはまた別の色規格となります。どの番号が何色に当たるかは後述。
塗りつぶしの色の変更
図形の塗りつぶしの色を変更
Shapeオブジェクト(またはShapeRangeコレクション).Fill.ForeColor.RGB = RGB(R,G,B)
Shapeオブジェクト(またはShapeRangeコレクション).Fill.ForeColor.SchemeColor = 色番号
Shapeオブジェクト(またはShapeRangeコレクション).Fill.ForeColor.RGB = RGB(R,G,B)
Shapeオブジェクト(またはShapeRangeコレクション).Fill.ForeColor.SchemeColor = 色番号
' vba
ActiveSheet.Shapes.Range(Array("maru")).Fill.ForeColor.RGB = RGB(0, 255, 0)
線色変更のLineをFillに差し替えれば、図形の塗りつぶしをするコードになります。
複数図形を指定
' vba
ActiveSheet.Shapes.SelectAll
Selection.ShapeRange.Fill.ForeColor.RGB = RGB(0, 255, 0)
図形全部の色をまとめて変更するには、Shapesコレクションを取得してから選択範囲の色を変えます。
' vba
ActiveSheet.Shapes.Range(Array(1, 2)).Fill.ForeColor.RGB = RGB(0, 255, 0)
複数図形をまとめて変更する場合は、Range内で色を変更する図形を個別に指定します。
SchemeColorの色見本
' vba
For i = 1 To 80
With ActiveSheet.Shapes.AddLine(60, Cells(i, 1).Top + 7, 100, Cells(i, 1).Top + 7).Line
.Weight = 10
.ForeColor.SchemeColor = i
End With
Cells(i, 1).Value = i
Next
SchemeColorは1から80まであります。とりあえずコードで全部出力してみると、
![schemecolor vba shape 1](https://sunagitsune.com/wp-content/uploads/2021/10/schemecolor-vba-shape-1.png)
色がワーッと出るので、
![schemecolor vba shape 2](https://sunagitsune.com/wp-content/uploads/2021/10/schemecolor-vba-shape-2-650x390.png)
並べ替えた表がこちらになります。
![schemecolor vba shape 3](https://sunagitsune.com/wp-content/uploads/2021/10/schemecolor-vba-shape-3-650x390.png)
1~7と9~15がまったく同じだったり、
![schemecolor vba shape 4](https://sunagitsune.com/wp-content/uploads/2021/10/schemecolor-vba-shape-4-650x390.png)
その後も色被りが頻出するので見た目より使える色少ないですが、それなりの色数があります。
![](https://sunagitsune.com/wp-content/uploads/2021/05/innovation-561388_1280-160x90.jpg)
Excel(エクセル):図形
Excelでは、図形という機能を使うことで四角形や丸、矢印などのオブジェクトをシート状に配置することができます。セルの形状を無視して配置できるので、フローチャートや装飾、注釈などアイデア次第でさまざまな用途に利用できます。
図形作成・操作...
![](https://sunagitsune.com/wp-content/uploads/2021/03/person-6076771_1280-160x90.jpg)
Excel(エクセル):色、塗りつぶし、スタイル
Excelのセルや文字などの色を変える方法、スタイルを規定する方法のまとめです。
色の変更
セル・文字の色を変更する方法です。基本的にこれ知っとけば応用がききます。パレットにない色の作り方、グラデーションにも言及しています。...
![](https://sunagitsune.com/wp-content/uploads/2018/12/mathematics-1509559_1280-160x90.jpg)
関数・演算子・メソッド・プロパティ名から探すExcel/VBA(マクロ)使い方・組み合わせ方まとめ
こちらはExcelやメソッドの諸機能を、機能の名称から探せるまとめ記事です。
![](https://sunagitsune.com/wp-content/uploads/2018/10/gui-2311261_1280.png)
やりたいことから方法を探すエクセル(Excel)操作・関数・VBA(マクロ)逆引きまとめ
逆引き(やりたいことから探す)Excel記事まとめ
コメント