【マクロVBA】図形の塗りつぶし・色の設定方法! Fill.ForeColorとRGB等の使い方

写真・図

エクセルにはさまざまな図形を挿入することができます。
さらに塗りつぶしであったり、枠の色を変更したりなど様々な機能が存在します。

この機能はマクロVBAでも設定・変更が可能です。

今回は図形を塗りつぶす方法について紹介しています。
様々な方法を紹介していますので是非参考にしてみてください。

 

図形の枠の色の変更方法についてはこちらから☟

【マクロVBA】図形の枠の色の設定・変更方法! Line.ForeColorとRGB等の使い方 ► 独学エクセル塾 (dokugakuexcel.com)

それでは見ていきましょう。




⬛︎忙しい人向けのコピペ用プログラム

Sub 変数を応用して図に色をRGBで塗りつぶす()
Dim Target, Red As Long, Green As Long, Blue As Long
Red = 115 '任意のRの数値を入力
Green = 55 '任意のGの数値を入力
Blue = 100 '任意のBの数値を入力
Target = Selection.Name
ActiveSheet.Shapes(Target).Fill.ForeColor.RGB = RGB(Red, Green, Blue)
End Sub

⬛︎構文の説明

今回は3パターン紹介しています。
使用方法は後ほど紹介しています。

①RGBでの塗りつぶし
Activesheet.Shapes (“ここに図形の名前”).Fill.ForeColor.RGB = RGB(Rの数値,Gの数値,Bの数値)

 

②SchemeColorでの塗りつぶし
Activesheet.Shapes (“ここに図形の名前”).Fill.ForeColor.SchemeColor = ここに1から80の数値

 

③ObjectThemeColorでの塗りつぶし
Activesheet.Shapes (“ここに図形の名前”).Fill.ForeColor.ObjectThemeColor = テーマの配色の名前または値

 
※配色については下記表を参照してください。

 

名前説明
msoThemeColorMixed-2テーマの色の組み合わせを指定します。
msoNotThemeColor0テーマの色を指定しません。
msoThemeColorDark11濃色 1 テーマの色を指定します。
msoThemeColorLight12淡色 1 テーマの色を指定します。
msoThemeColorDark23濃色 2 テーマの色を指定します。
msoThemeColorLight24淡色 2 テーマの色を指定します。
msoThemeColorAccent15アクセント 1 テーマの色を指定します。
msoThemeColorAccent26アクセント 2 テーマの色を指定します。
msoThemeColorAccent37アクセント 3 テーマの色を指定します。
msoThemeColorAccent48アクセント 4 テーマの色を指定します。
msoThemeColorAccent59アクセント 5 テーマの色を指定します。
msoThemeColorAccent610アクセント 6 テーマの色を指定します。
msoThemeColorHyperlink11ハイパーリンクのテーマの色を指定します。
msoThemeColorFollowedHyperlink12クリックされたハイパーリンクのテーマの色を指定します。
msoThemeColorText113テキスト 1 テーマの色を指定します。
msoThemeColorBackground114背景 1 テーマの色を指定します。
msoThemeColorText215テキスト 2 テーマの色を指定します。
msoThemeColorBackground216背景 2 テーマの色を指定します。

⬛︎図の塗りつぶしをする

先程は3つの塗りつぶしの構文を紹介しました。
それでは実際にそれぞれの使用方法を紹介します。

①RGBでの塗りつぶし

まずはRGBで色をつける方法を見ていきましょう。
RGBとは「RED:赤」「Green:緑」「Blue:青」の原色を意味しており、
この3色を混ぜて色を指定します。

各数値は「0から255」で指定します。
では構文を再度確認しましょう。

Activesheet.Shapes (“ここに図形の名前”).Fill.ForeColor.RGB = RGB(Rの数値,Gの数値,Bの数値)

Activesheet.Shapesの後に図形の名前を入力します。
図の名前は図を選択した際に左上の「名前のボックス」から確認することができます。

「変数= Selection.Name」で選択している図の名前を変数に格納して活用することも可能です。

一方、RGBの方はRGB(赤の要素,緑の要素,青の要素)のように指示します。

ちなみに各要素の数値が大きければ各原色は濃くなります。
一例を紹介すると下記の通りです。

白:RGB(0,0,0)
黒:RGB(255,255,255)
赤:RGB(255,0,0)
黄色:RGB(255,255,0)
青:RGB(0,0,255)

では実際にプログラムを作成してみましょう。
見本として下図のシートを用意しました。

今回は見本で「見本図」という名前をつけた図を用意しました。
こちらを塗りつぶしてみたいと思います。

例で赤色に塗りつぶしてみましょう。
プログラムはこのようになります。

Sub 図に色をRGBで塗りつぶす()
ActiveSheet.Shapes("見本図").Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub

それでは実行してみましょう。
結果はこのようになりました。

見本図を赤く塗りつぶすことができましたね。

選択している図の色を変更したい場合はこちらです。

Sub 図に色をRGBで塗りつぶす()
Dim Target As String
Target = Selection.Name
ActiveSheet.Shapes(Target).Fill.ForeColor.RGB = RGB(255, 0, 0)
End Sub

②SchemeColorでの塗りつぶし

次に「SchemeColor」で塗りつぶす方法を見ていきましょう。

では再度、構文を確認したいと思います。

Activesheet.Shapes (“ここに図形の名前”).Fill.ForeColor.SchemeColor = ここに1から80の数値

こちらの方法は「ForeColor.SchemeColor」で塗りつぶしを宣言し、「=」の後に
0から80」の数値を指定します。

では見本で「6」で実行してみましょう。

今回も下図の「見本図」の色を変えたいと思います。

プログラムはこちらです。

Sub 図に色をSchemeColorで塗りつぶす()
ActiveSheet.Shapes("見本図").Fill.ForeColor.SchemeColor = 6
End Sub

それでは実行してみましょう。
結果はこのようになります。

「見本図」の色が変わりました。

では「SchemeColor」の1から80の色はどのようなものか
下図の一覧で確認してみましょう。

一応確認用の図を表示させるプログラムを載せています。

Sub SchemeColorの色一覧()

Dim CycleR As Long, CycleC As Long, No As Long
Dim TargetLeft, TargetTop, TargetWidth, TargetHeight

No = 1
For CycleC = 1 To 10 Step 3
 For CycleR = 1 To 20 Step 1
  TargetLeft = Cells(CycleR, CycleC).Left
  TargetTop = Cells(CycleR, CycleC).Top
  TargetWidth = Cells(CycleR, CycleC).Width
  TargetHeight = Cells(CycleR, CycleC).Height
  With ActiveSheet.Shapes.AddShape(msoShapeRectangle, TargetLeft, TargetTop, TargetWidth, TargetHeight)
        .Fill.ForeColor.SchemeColor = No
  End With
  Cells(CycleR, CycleC + 1) = ":" & No
  No = No + 1
 Next CycleR
Next CycleC

End Sub

選択している図の色を変更したい場合はこちらです。

Sub 図に色をSchemeColorで塗りつぶす1()
Dim Target As String
Target = Selection.Name
ActiveSheet.Shapes(Target).Fill.ForeColor.SchemeColor = 5
End Sub

③ObjectThemeColor

こちらは設定しているテーマを活用した貼り付け方法になります。
テーマとは色を塗りつぶす際の初めに表示されるデフォルトの色になります。

つまり、こちらの方法で塗りつぶした場合、「ページレイアウト」「配色」の設定を変えると
その配色に合わせて色が変化します。
テーマに沿った塗りつぶしをしたい場合に使えそうですね。

では構文を見てみましょう。

Activesheet.Shapes (“ここに図形の名前”).Fill.ForeColor.ObjectThemeColor = テーマの配色の名前または値

ここでの「テーマの配色」は「名前」または「値」が当てはまります。
一覧に関しては下記の表をご参照ください。

 

名前説明
msoThemeColorMixed-2テーマの色の組み合わせを指定します。
msoNotThemeColor0テーマの色を指定しません。
msoThemeColorDark11濃色 1 テーマの色を指定します。
msoThemeColorLight12淡色 1 テーマの色を指定します。
msoThemeColorDark23濃色 2 テーマの色を指定します。
msoThemeColorLight24淡色 2 テーマの色を指定します。
msoThemeColorAccent15アクセント 1 テーマの色を指定します。
msoThemeColorAccent26アクセント 2 テーマの色を指定します。
msoThemeColorAccent37アクセント 3 テーマの色を指定します。
msoThemeColorAccent48アクセント 4 テーマの色を指定します。
msoThemeColorAccent59アクセント 5 テーマの色を指定します。
msoThemeColorAccent610アクセント 6 テーマの色を指定します。
msoThemeColorHyperlink11ハイパーリンクのテーマの色を指定します。
msoThemeColorFollowedHyperlink12クリックされたハイパーリンクのテーマの色を指定します。
msoThemeColorText113テキスト 1 テーマの色を指定します。
msoThemeColorBackground114背景 1 テーマの色を指定します。
msoThemeColorText215テキスト 2 テーマの色を指定します。
msoThemeColorBackground216背景 2 テーマの色を指定します。

ちなみにテーマと値を比較すると下図のようになります。

では実際に図を塗りつぶしてみたいと思います。
今回も下図の「見本図」の色を変えたいと思います。

Sub 図に色をObjectThemeColorで塗りつぶす()
ActiveSheet.Shapes("見本図").Fill.ForeColor.ObjectThemeColor = msoThemeColorAccent3
End Sub

今回は「msoThemeColorAccent3」としていますが「7」でも問題ありません。
実行した結果はこちらのです。

「見本図」の色が変わりました。
先ほどの配色の表の通りに色が変化しましたね。

では見本で配色を変えてみましょう。
このようになります。

配色に合わせて図の色も変化しました。

選択している図の色を変更したい場合はこちらです。

Sub 図に色をObjectThemeColorで塗りつぶす()
Dim Target As String
Target = Selection.Name
ActiveSheet.Shapes(Target).Fill.ForeColor.ObjectThemeColor = 7
End Sub

⬛︎オススメの図に塗りつぶしをする方法

これまで3つの方法で図に塗りつぶしをする方法を紹介しましたが、
オススメを挙げるとすると「RGB」での指定になります。

理由としては下記の内容になります。

・色の調整や変更を計算や変数で応用できる
・RGBでの指定はどの条件でも変わらない(ObjectThemeColorは配色の設定で変わる)

例を見ていきます。
下記のプログラムを用意しました。

Sub 変数を応用して図に色をRGBで塗りつぶす()
Dim Target, Red As Long, Green As Long, Blue As Long
Red = 115 '任意のRの数値を入力
Green = 55 '任意のGの数値を入力
Blue = 100 '任意のBの数値を入力
Target = Selection.Name
ActiveSheet.Shapes(Target).Fill.ForeColor.RGB = RGB(Red, Green, Blue)
End Sub

通常RGBの値を数値で入力していましたが、
見本のように変数を活用することができます。

⬛︎公式の説明

わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟

FillFormat.ForeColor プロパティ (Excel) | Microsoft Learn

⬛︎まとめ

いかがだったでしょうか。
VBAでも図の塗りつぶしをできるのは便利ですね。

是非参考にしてみてください。

それでは次回の記事でお会いしましょう。

コメント