エクセルにはさまざまな図形を挿入することができます。
さらに図を塗りつぶしたり、枠の色を変更したりなど様々な機能が存在します。
この機能はマクロVBAでも設定・変更が可能です。
今回は図形の枠に色を付ける方法について紹介しています。
様々な方法を紹介していますので是非参考にしてみてください。
図形の塗りつぶしについてはこちらから☟
【マクロVBA】図形の塗りつぶし・色の設定方法! Fill.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).Line.ForeColor.RGB = RGB(Red, Green, Blue) End Sub
⬛︎構文
今回は3パターン紹介しています。
使用方法は後ほど紹介しています。
①RGBで図形の枠に色を付ける方法
Activesheet.Shapes (“ここに図形の名前”).Line.ForeColor.RGB = RGB(Rの数値,Gの数値,Bの数値)
②SchemeColorで図形の枠に色を付ける方法
Activesheet.Shapes (“ここに図形の名前”).Line.ForeColor.SchemeColor = ここに1から80の数値
③ObjectThemeColorで図形の枠に色を付ける方法
Activesheet.Shapes (“ここに図形の名前”).Line.ForeColor.ObjectThemeColor =テーマの配色の名前または値
※配色については下記表を参照してください。
名前 | 値 | 説明 |
---|---|---|
msoThemeColorMixed | -2 | テーマの色の組み合わせを指定します。 |
msoNotThemeColor | 0 | テーマの色を指定しません。 |
msoThemeColorDark1 | 1 | 濃色 1 テーマの色を指定します。 |
msoThemeColorLight1 | 2 | 淡色 1 テーマの色を指定します。 |
msoThemeColorDark2 | 3 | 濃色 2 テーマの色を指定します。 |
msoThemeColorLight2 | 4 | 淡色 2 テーマの色を指定します。 |
msoThemeColorAccent1 | 5 | アクセント 1 テーマの色を指定します。 |
msoThemeColorAccent2 | 6 | アクセント 2 テーマの色を指定します。 |
msoThemeColorAccent3 | 7 | アクセント 3 テーマの色を指定します。 |
msoThemeColorAccent4 | 8 | アクセント 4 テーマの色を指定します。 |
msoThemeColorAccent5 | 9 | アクセント 5 テーマの色を指定します。 |
msoThemeColorAccent6 | 10 | アクセント 6 テーマの色を指定します。 |
msoThemeColorHyperlink | 11 | ハイパーリンクのテーマの色を指定します。 |
msoThemeColorFollowedHyperlink | 12 | クリックされたハイパーリンクのテーマの色を指定します。 |
msoThemeColorText1 | 13 | テキスト 1 テーマの色を指定します。 |
msoThemeColorBackground1 | 14 | 背景 1 テーマの色を指定します。 |
msoThemeColorText2 | 15 | テキスト 2 テーマの色を指定します。 |
msoThemeColorBackground2 | 16 | 背景 2 テーマの色を指定します。 |
⬛︎図の枠に色を付けるをする
先程は3つの構文を紹介しました。
それでは実際にそれぞれの使用方法を紹介します。
①RGBで図形の枠に色を付ける方法
まずはRGBで図形の枠に色を付ける方法について見ていきましょう。
RGBとは「RED:赤」「Green:緑」「Blue:青」の原色を意味しており、
この3色を混ぜて色を指定します。
各数値は「0から255」で指定します。
では構文を再度確認しましょう。
Activesheet.Shapes (“ここに図形の名前”).Line.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("見本図").Line.ForeColor.RGB = RGB(255, 0, 0) End Sub
それでは実行してみましょう。
結果はこのようになりました。
見本の図の枠の色を赤くすることができました。
選択している図の色を変更したい場合はこちらです。
Sub 図の枠の色をRGBでつける() Dim Target As String Target = Selection.Name ActiveSheet.Shapes(Target).Line.ForeColor.RGB = RGB(255, 0, 0) End Sub
②SchemeColorで図形の枠に色を付ける方法
次に「SchemeColor」で図形の枠に色を付ける方法を見ていきましょう。
では再度、構文を確認したいと思います。
Activesheet.Shapes (“ここに図形の名前”).Line.ForeColor.SchemeColor = ここに1から80の数値
こちらの方法は「ForeColor.SchemeColor」で枠に色を付けるを宣言し、「=」の後に
「0から80」の数値を指定します。
では見本で「6」で実行してみましょう。
今回も下図の「見本図」の色を変えたいと思います。
プログラムはこちらです。
Sub 図の枠の色をSchemeColorでつける()
ActiveSheet.Shapes("見本図").Line.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) .Line.ForeColor.SchemeColor = No End With Cells(CycleR, CycleC + 1) = ":" & No No = No + 1 Next CycleR Next CycleC End Sub
選択している図の色を変更したい場合はこちらです。
Sub 図の枠の色をSchemeColorでつける()
Dim Target As String
Target = Selection.Name
ActiveSheet.Shapes(Target).Line.ForeColor.SchemeColor = 10
End Sub
③ObjectThemeColorで図形の枠に色を付ける方法
こちらは設定しているテーマを活用した貼り付け方法になります。
テーマとは色を塗りつぶす際の初めに表示されるデフォルトの色になります。
つまり、こちらの方法で枠に色を付けた場合、「ページレイアウト」の「配色」の設定を変えると、その配色に合わせて色が変化します。
テーマに沿った枠の色を付けたい場合に使えそうですね。
では構文を見てみましょう。
Activesheet.Shapes (“ここに図形の名前”).Line.ForeColor.ObjectThemeColor = テーマの配色の名前または値
ここでの「テーマの配色」は「名前」または「値」が当てはまります。
一覧に関しては下記の表をご参照ください。
名前 | 値 | 説明 |
---|---|---|
msoThemeColorMixed | -2 | テーマの色の組み合わせを指定します。 |
msoNotThemeColor | 0 | テーマの色を指定しません。 |
msoThemeColorDark1 | 1 | 濃色 1 テーマの色を指定します。 |
msoThemeColorLight1 | 2 | 淡色 1 テーマの色を指定します。 |
msoThemeColorDark2 | 3 | 濃色 2 テーマの色を指定します。 |
msoThemeColorLight2 | 4 | 淡色 2 テーマの色を指定します。 |
msoThemeColorAccent1 | 5 | アクセント 1 テーマの色を指定します。 |
msoThemeColorAccent2 | 6 | アクセント 2 テーマの色を指定します。 |
msoThemeColorAccent3 | 7 | アクセント 3 テーマの色を指定します。 |
msoThemeColorAccent4 | 8 | アクセント 4 テーマの色を指定します。 |
msoThemeColorAccent5 | 9 | アクセント 5 テーマの色を指定します。 |
msoThemeColorAccent6 | 10 | アクセント 6 テーマの色を指定します。 |
msoThemeColorHyperlink | 11 | ハイパーリンクのテーマの色を指定します。 |
msoThemeColorFollowedHyperlink | 12 | クリックされたハイパーリンクのテーマの色を指定します。 |
msoThemeColorText1 | 13 | テキスト 1 テーマの色を指定します。 |
msoThemeColorBackground1 | 14 | 背景 1 テーマの色を指定します。 |
msoThemeColorText2 | 15 | テキスト 2 テーマの色を指定します。 |
msoThemeColorBackground2 | 16 | 背景 2 テーマの色を指定します。 |
ちなみにテーマと値を比較すると下図のようになります。
では実際に図の枠に色を付けてみたいと思います。
今回も下図の「見本図」の色を変えたいと思います。
プログラムはこのようになります。
Sub 図の枠の色をObjectThemeColorでつける()
ActiveSheet.Shapes("見本図").Line.ForeColor.ObjectThemeColor = msoThemeColorAccent4
End Sub
今回は「msoThemeColorAccent4」としていますが「8」でも問題ありません。
実行した結果はこちらのです。
「見本図」の枠の色が変わりました。
先ほどの配色の表の通りに色が変化しましたね。
では見本で配色を変えてみましょう。
このようになります。
配色に合わせて図の色も変化しました。
選択している図の色を変更したい場合はこちらです。
Sub 図の枠の色をObjectThemeColorでつける()
Dim Target
Target = Selection.Name
ActiveSheet.Shapes(Target).Line.ForeColor.ObjectThemeColor = msoThemeColorAccent4
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).Line.ForeColor.RGB = RGB(Red, Green, Blue) End Sub
通常RGBの値を数値で入力していましたが、
見本のように変数を活用することができます。
⬛︎公式の説明
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟
LineFormat.ForeColor プロパティ (Excel) | Microsoft Learn
⬛︎まとめ
いかがだったでしょうか。
VBAでも図の枠に色を付けることができるのは便利ですね。
是非参考にしてみてください。
それでは次回の記事でお会いしましょう。
コメント