「塗りつぶし」背景色をVBAで記述する

vbacellspaintbackeyecatch

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

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

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

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

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

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

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

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

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

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

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

vbacellspaint011

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

vbacellspaint001

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

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

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

Interiorプロパティ

構文

Rangeオブジェクト.Interior

色の設定については、エクセル2007バージョンでRGBでの設定が出来るようになったので、

256の3乗の16,777,216通り(1,670万色)の色を表現する事が出来ます。

やたらと再現色数が多くても、モニター側の問題や人間の視力の問題もあるので、そこは見やすく・解りやすくという判断になるのでしょうが、エクセルではもう「ある意味、納得がいくまで色数を使える」ということです。

色のVBA記述方法と気に入る色の見つけ方

vbacellspaint012

今回は「背景色」について説明を行っていきます。

1,670万色を使えるということは、設定方法もちょっと難しい?とか、どの色を選べば美しい?とか、逆に不安になってしまうかもしれません。でも心配ご無用です。

色の記述方法

背景色の設定については、「Interiorプロパティ」から呼び出した「Interiorオブジェクト」に対して、「Colorプロパティ」「Colorindexプロパティ」「ThemeColorプロパティ」を利用することになります。

Colorプロパティ

「セル(文字)の表示設定」や「罫線設定」でも軽く説明してきましたが、

色の設定で、今現在一番スタンダードなのが「Colorプロパティ」です。

1670万色の指定をすることが出来ます。

構文

Rangeオブジェクト.Interior.Color = カラー定数 または RGB指定

カラー定数とRGB指定

カラー定数については、基本色に設定名称を付けたものです。(さらに、RGB表記法と色の関係)

指定色色表示定数RGB(R値, B値, G値)カラー値
vbBlack0,0,00
vbRed255,0,0255
vbGreen0,255,065280
vbYellow255,255,065535
vbBlue0,0,25516711680
マゼンダvbMagenta255,0,25516711935
シアンvbCyan0,255,25516776960
vbWhite255,255,25516777215

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

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

vbacellspaint003

ご自分で作成した色の「赤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のチャート表示場所は

vbacellspaint002a

左から順番にThemaColorプロパティの設定値が設定されています。

テーマカラーは選択されたテーマによって、そのテーマに合ったカラー表示になります。

表示位置内容設定値
1背景1xlThemaColorDark1
2テキスト1xlThemaColorLight1
3背景2xlThemaColorDark2
4テキスト2xlThemaColorLight2
5アクセント1xlThemaColorAccent1
6アクセント2xlThemaColorAccent2
7アクセント3xlThemaColorAccent3
8アクセント4xlThemaColorAccent4
9アクセント5xlThemaColorAccent5
10アクセント6xlThemaColorAccent6
ハイパーリンク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
vbacellspaint004

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

vbacellspaint005
RGB(125,125,125)
vbacellspaint006
RGB(155,125,125)
vbacellspaint007
RGB(185,125,125)
vbacellspaint008
RGB(215,125,125)
vbacellspaint009
RGB(245,125,125)
vbacellspaint010
RGB(19,126,125)

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も同時表記されていますので、変換作業は不要です。

一番おススメのカラーチャートを無料公開しているこのサイトは

「原色大辞典」というサイトです。こんなに色ってあるのかと思ってしまいます。

(外部リンクです。)

セルの「塗りつぶし」背景色のまとめ

vbacellspaint013

作成する帳票書類には作成者の個性を乗せることも大事です。

一番重要なのは、書類の内容、意味する視点に個性が載っていることですが、

書類作成での色使いでも個性を乗せる要素があるのではと感じます。

チャラくない上手な使い方で、スキルを駆使して目の引く書類づくりを目指しましょう。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

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

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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

アンケートでポイ活しよう!!

アンケートに答えれば答えるほど ”使える” ポイントがたまります。

NTTコム サーチ

af_banner01

Dstyle web

dstyleweb_logo
dstyle_320x50-min