セルの書式設定「塗りつぶし」背景色をVBAで記述する

vbacellspaintbackeyecatch

エクセルVBA セルの書式設定「塗りつぶし」の背景色をVBAコードで設定できるようにします。
Interiorプロパティを使用した3種類の色設定方法があります。

こんにちは じゅんぱ店長 (@junpa33) です。

今回はセルの書式設定の「塗りつぶし」をエクセルVBAで記述する方法です。

普段、作成する帳票書類は、白黒の世界

白地のコピー用紙やPDF、文字は黒文字、罫線も黒色、たまに赤色。” とても地味 ” 。

目を休めるためにWebサイトをちょっと見る。” ちょっと、生き返る。 ”

モノトーン画面を一度、許される限界まで華やかにしたい。

願望ともいうべき欲望も含めた、帳票書類づくりをしたい。

そのためには「セルの色設定」を知ることが必要。

今回はまず、「背景色」の設定とVBA記述方法を説明していきます。

セルの書式設定「塗りつぶし」の設定画面はこれです

セルの書式設定「塗りつぶし」には「背景色」「パターンの種類」「塗りつぶし効果」の設定項目があります。

塗りつぶしの設定については、「Interiorプロパティ」を使用することになります。

「Interiorプロパティ」は、Rangeオブジェクトから「Interiorオブジェクト」を呼び出すために使います。

その「Interiorオブジェクト」に対して「Colorプロパティ」「Colorindexプロパティ」「Patternプロパティ」などを当てて詳細を設定して行くことになります。

Interiorプロパティ

 構文 

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表記法と色の関係)

カラー定数RGB指定
vbBlackRGB(0,0,0)
vbRedRGB(256,0,0)
vbGreenRGB(0,256,0)
vbYellowRGB(256,256,0)
vbBlueRGB(0,0,256)
vbMagentaRGB(256,0,256)マゼンタ
vbCyanRGB(0,256,256)シアン
vbWhiteRGB(256,256,256)

RGBの表記方法は、RGB(赤色の濃度指数、緑色の濃度指数、青色の濃度指数)となっています。

もっと他の色を使いたい場合は、自作をします。

ご自分で作成した色の「赤R・緑G・青B」の数値をRGBの表記法に従って記述します。

エェッ~

これで1,670万色作れるって?! ちょっと「うぅっ!」となってしまいます。

「ここ掘れワンワン」じゃないんだから、どんな色が飛び出すか分からんでしょうが!!

(これを見た「エクセル始めてさん」の思いを代弁してみました)

ColorIndexプロパティ

「ColorIndexプロパティ」はエクセル2003までに使われていた、

56色を指定できるカラーチャートによるものです。

 構文 

Rangeオブジェクト.Interior.ColorIndex = インデックス番号

インデックス番号

vbafontsys001
153525149115556
94612101454716
345435042411348
744648335415
384036353437392
1718192021222324
2526272829303132

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プロパティ

TintAndShadeプロパティを使って、色の濃度を変化させることが出来ます。

設定値は「-1から+1 センター値は0」となっています。

またこれは、Colorプロパティでも使用することが出来ます。

テーマカラーの利用例題

例題コード

テーマカラーのアクセント1の色をセルB3からC4に設定し、同時にセルB5からC6にはアクセント1の色の濃度40%の色を指定した。

ThemaColorサンプルコード
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指定を変数に組み込む

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)を指定することになる

RGB指定色変数化
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秒のインターバルでカラーのグラデーション点滅を行わせるコードです。

RGB(125,125,125)
RGB(155,125,125)
RGB(185,125,125)
RGB(215,125,125)
RGB(245,125,125)
RGB(19,126,125)

5回まで繰り返すと、カラーのグラデーションから外れてしまう。

RGB指定(R値・G値・B値)とRGB関数が返す数値の関係は、

R値が満タン(256)まで来ると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を独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です
vbacellsprotecteyecatchセルの書式設定「セルの保護」の設定を最速理解vbacellspaint_gradteyecatchセルの書式設定「グラデーションの塗りつぶし」を設定するcellspaintpatterneyecatchセルの書式設定「塗りつぶしの網掛け」を最速理解vbacellspaintbackeyecatchセルの書式設定「塗りつぶし」背景色をVBAで記述するvbacellsbordereyecatchセルの書式設定「罫線」のVBAを最速理解vbacellsfonteyecatchセルの書式設定「フォント」の操作を最速理解するvbacellsplacementeyecatchセルの書式設定「配置」を最速理解するvbacellssyoshikieyecatchセルの書式設定「表示形式」をVBAコード的に最速理解するVBAcellareaeyecatchセルの範囲選択と設定は14のツールで対応するvbaendpropertyeyecatchセルの範囲選択 Endプロパティで上下左右の最終セルを取得vbaentirecolumneyecatchセルの範囲選択 EntireColumnとColumnの使い方vbaentireroweyecatchセルの範囲選択 EntireRowとRowプロパティの違いvbacolumnseyecatchセルの範囲選択 Columnsプロパティの列指定で参照するvbaunioneyecatchセルの範囲選択 UnionとRangeの一括選択の働きを比較vbaresizeeyecatchセルの範囲選択 Resizeプロパティでセル範囲をサイズ変更vbarangevscellseyecatchセルの範囲選択 Range VS Cells 、VBAで使えるのはどっちvbausedrangeeyecatchセルの範囲選択 UsedRangeプロパティの使い方vbaborder1eyecatchセルの編集 実際に罫線を設定する 位置・線種・太さ・色vbarowseyecatchセルの範囲選択 Rowsプロパティの働きと関連のメソッドvbadeleteeyecatchセルの編集 DeleteとClearの使い分け 削除とクリアの違いvbacurrentregioneyecatchセルの範囲選択 CurrentRegionは連続データをまとめて掴むSpecialCellseyecatchセルの範囲選択 SpecialCellsメソッドはセル検索し選択するvbacharactereyecatchaセルの編集 Charactersで文字列中の一部の文字を加工するvbafontsyseyecatchaセルの編集 Fontプロパティで文字装飾操作をするvbalastcelleyecatchセルの範囲選択 データ入力済セルの最終行番号を取得するvbaoffseteyecatchセルの範囲選択 Offsetプロパティは指定範囲を移動させる

今回の記事はここまでです。   最後までご覧いただき有難うございました。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。