エクセルVBA セルの書式設定「塗りつぶし」の背景色をVBAコードで設定できるようにします。
Interiorプロパティを使用した3種類の色設定方法があります。
こんにちは じゅんぱ店長 (@junpa33) です。
今回はセルの書式設定の「塗りつぶし」をエクセルVBAで記述する方法です。
普段、作成する帳票書類は、白黒の世界
白地のコピー用紙やPDF、文字は黒文字、罫線も黒色、たまに赤色。” とても地味 ” 。
目を休めるためにWebサイトをちょっと見る。” ちょっと、生き返る。 ”
モノトーン画面を一度、許される限界まで華やかにしたい。
願望ともいうべき欲望も含めた、帳票書類づくりをしたい。
そのためには「セルの色設定」を知ることが必要。
今回はまず、「背景色」の設定とVBA記述方法を説明していきます。
コンテンツ
セルの書式設定「塗りつぶし」の設定画面はこれです
セルの書式設定「塗りつぶし」には「背景色」「パターンの種類」「塗りつぶし効果」の設定項目があります。
塗りつぶしの設定については、「Interiorプロパティ」を使用することになります。
「Interiorプロパティ」は、Rangeオブジェクトから「Interiorオブジェクト」を呼び出すために使います。
その「Interiorオブジェクト」に対して「Colorプロパティ」「Colorindexプロパティ」「Patternプロパティ」などを当てて詳細を設定して行くことになります。
Rangeオブジェクト.Interior
色の設定については、エクセル2007バージョンでRGBでの設定が出来るようになったので、
256の3乗の16,777,216通り(1,670万色)の色を表現する事が出来ます。
やたらと再現色数が多くても、モニター側の問題や人間の視力の問題もあるので、そこは見やすく・解りやすくという判断になるのでしょうが、エクセルではもう「ある意味、納得がいくまで色数を使える」ということです。
色のVBA記述方法と気に入る色の見つけ方
今回は「背景色」について説明を行っていきます。
1,670万色を使えるということは、設定方法もちょっと難しい?とか、どの色を選べば美しい?とか、逆に不安になってしまうかもしれません。でも心配ご無用です。
色の記述方法
背景色の設定については、「Interiorプロパティ」から呼び出した「Interiorオブジェクト」に対して、「Colorプロパティ」「Colorindexプロパティ」「ThemeColorプロパティ」を利用することになります。
Colorプロパティ
「セル(文字)の表示設定」や「罫線設定」でも軽く説明してきましたが、
色の設定で、今現在一番スタンダードなのが「Colorプロパティ」です。
1670万色の指定をすることが出来ます。
Rangeオブジェクト.Interior.Color = カラー定数 または RGB指定
カラー定数については、基本色に設定名称を付けたものです。(さらに、RGB表記法と色の関係)
指定色 | 色表示 | 定数 | RGB(R値, B値, G値) | カラー値 |
---|---|---|---|---|
黒 | vbBlack | 0,0,0 | 0 | |
赤 | vbRed | 255,0,0 | 255 | |
緑 | vbGreen | 0,255,0 | 65280 | |
黄 | vbYellow | 255,255,0 | 65535 | |
青 | vbBlue | 0,0,255 | 16711680 | |
マゼンダ | vbMagenta | 255,0,255 | 16711935 | |
シアン | vbCyan | 0,255,255 | 16776960 | |
白 | vbWhite | 255,255,255 | 16777215 |
RGBの表記方法は、RGB(赤色の濃度指数、緑色の濃度指数、青色の濃度指数)となっています。
もっと他の色を使いたい場合は、自作をします。
ご自分で作成した色の「赤R・緑G・青B」の数値をRGBの表記法に従って記述します。
エェッ~
これで1,670万色作れるって?! ちょっと「うぅっ!」となってしまいます。
「ここ掘れワンワン」じゃないんだから、どんな色が飛び出すか分からんでしょうが!!
(これを見た「エクセル始めてさん」の思いを代弁してみました)
ColorIndexプロパティ
「ColorIndexプロパティ」はエクセル2003までに使われていた、
56色を指定できるカラーチャートによるものです。
Rangeオブジェクト.Interior.ColorIndex = インデックス番号
1 | 53 | 52 | 51 | 49 | 11 | 55 | 56 |
9 | 46 | 12 | 10 | 14 | 5 | 47 | 16 |
3 | 45 | 43 | 50 | 42 | 41 | 13 | 48 |
7 | 44 | 6 | 4 | 8 | 33 | 54 | 15 |
38 | 40 | 36 | 35 | 34 | 37 | 39 | 2 |
17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 |
ColorIndexプロパティが今後のエクセルのバージョンアップでいつまで利用できるかは不明ですが、
常に使うパターン化した色遣いがある時は、このインデックス番号を覚えていて、これによる指定が一番簡単です。
” 色を決めてる余裕はない ” という人には便利です。
ThemeColorプロパティ
テーマカラープロパティは、ブックに設定されているテーマの10種類のテーマカラーの内の1つを選択することが出来るものです。
Rangeオブジェクト.Interior.ThemaColor = 設定値
ThemeColorのチャート表示場所は
左から順番にThemaColorプロパティの設定値が設定されています。
テーマカラーは選択されたテーマによって、そのテーマに合ったカラー表示になります。
表示位置 | 内容 | 設定値 |
---|---|---|
1 | 背景1 | xlThemaColorDark1 |
2 | テキスト1 | xlThemaColorLight1 |
3 | 背景2 | xlThemaColorDark2 |
4 | テキスト2 | xlThemaColorLight2 |
5 | アクセント1 | xlThemaColorAccent1 |
6 | アクセント2 | xlThemaColorAccent2 |
7 | アクセント3 | xlThemaColorAccent3 |
8 | アクセント4 | xlThemaColorAccent4 |
9 | アクセント5 | xlThemaColorAccent5 |
10 | アクセント6 | xlThemaColorAccent6 |
- | ハイパーリンク | xlThemaColorHyperlimk |
- | 表示済ハイパーリンク | xlThemaColorFollowedHyperlimk |
TintAndShadeプロパティを使って、色の濃度を変化させることが出来ます。
設定値は「-1から+1 センター値は0」となっています。
またこれは、Colorプロパティでも使用することが出来ます。
テーマカラーのアクセント1の色をセルB3からC4に設定し、同時にセルB5からC6にはアクセント1の色の濃度40%の色を指定した。
Sub テーマカラー設定()
With Range("B3:C4")
.Interior.ThemeColor = xlThemeColorAccent1
With .Offset(2).Interior
.ThemeColor = xlThemeColorAccent1
.TintAndShade = 0.4
End With
End With
End Sub
RGB指定を変数化して表示色を変化させる
RGB指定を変数化して表示色を変化させることが出来ます。
これはどういうことかというと、” カラーグラデーションを計算することも出来る ” ということです。
RGBはRGB関数として、
「 赤の数値 + 緑の数値 x256 + 青の数値 x256 x256 」を計算して数値として返します。
なのでRGB指定した色はRGB関数によって数値化されているわけです。四則演算ができるということです。
RGB(125,125,125)の指定色に対して、赤の数値を30ポイントづつ4回上げる。
0回目・・・RGB(125,125,125)を指定する
1回目・・・RGB(155,125,125)を指定する
2回目・・・RGB(185,125,125)を指定する
3回目・・・RGB(215,125,125)を指定する
4回目・・・RGB(245,125,125)を指定する
もし5回目を行った場合は
5回目・・・RGB(19,126,125)を指定することになる
Sub RGB変数化()
Dim i As Long
For i = 0 To 4
Range("B3:C4").Interior.Color = RGB(125, 125, 125) + 30 * i
Range("B6") = "RGB = " & RGB(125, 125, 125) + 30 * i
Call Sleep(500)
Next i
End Sub
このVBAコードは0.5秒のインターバルでカラーのグラデーション点滅を行わせるコードです。
5回まで繰り返すと、カラーのグラデーションから外れてしまう。
RGB指定(R値・G値・B値)とRGB関数が返す数値の関係は、
R値が満タン(255)まで来るとG値の数値が1上がる。R値が257は無いので、その時R値は1に戻り代わりにG値が+1される。
今回の5回目はR値が285になるので、R値が19に戻り代わりにG値が+1の126になった。
セルの背景色を解除するVBAコード
背景色を設定すれば、解除するVBAコードも必要になります。
この解除の設定値は至って簡単です。
「 xlNone 」が設定値になります。
例えば、セルE5からE7までの設定した背景色を解除するVBAコードは下記のようになります。
Sub 背景色解除()
Range("E5").Interior.Color = xlNone
Range("E6").Interior.ColorIndex = xlNone
Range("E7").Interior.ThemeColor = xlNone
End Sub
気に入る色の見つけ方
折角、多色にするのだから自分で作ろうと、普段から頑張っている方がひょっとしたらいるかもしれません。
やめましょう!事務効率ダダ下がりです。
また他にも、RGBの自作チャート表(色の設定)なんて使いづらくてやってられない。と思っている人も多いはず。
色を決めるにはカラーサンプルチャートで探すのが一番早い!!です。
この方法では、主にWebサイトで色を探すことになります。
Webでは、色指定は「Hex(16進法)」がメインの指定法になっています。
気に入った色を見つけても色指定番号がHex表記になっています。
エクセルで利用するのはRGB(10進法)なので変換することが必要になります。
でも安心してください。
このサイトならしっかりRGBも同時表記されていますので、変換作業は不要です。
一番おススメのカラーチャートを無料公開しているこのサイトは
「原色大辞典」というサイトです。こんなに色ってあるのかと思ってしまいます。
(外部リンクです。)
セルの「塗りつぶし」背景色のまとめ
作成する帳票書類には作成者の個性を乗せることも大事です。
一番重要なのは、書類の内容、意味する視点に個性が載っていることですが、
書類作成での色使いでも個性を乗せる要素があるのではと感じます。
チャラくない上手な使い方で、スキルを駆使して目の引く書類づくりを目指しましょう。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。