エクセルの機能でセルの背景に色をつける機能はよく使用すると思います。
同じ動作をマクロVBAでも簡単に行うことができます。
様々な塗りつぶしのパターンを紹介していますので是非参考にしてみてください。
それでは見ていきましょう。
⬛︎忙しい人向けのコピペ用プログラム
Sub RGBで変数を使用してセルの背景の色を変える() Dim Red As Long, Green As Long, Blue As Long Red = 115 '任意のRの数値を入力 Green = 55 '任意のGの数値を入力 Blue = 100 '任意のBの数値を入力 Range("A1:D5").Interior.Color = RGB(Red, Green, Blue) End Sub
⬛︎構文
まずは構文を説明します。
①RGBで色の指定をする
Range(“色をつけたいセル”).Interior.Color=RGB(赤の要素,緑の要素,青の要素)
②ColorIndexで色を指定する
Range(“色をつけたいセル”).Interior.ColorIndex=インデックス番号
③定数で色を指定する
Range(“色をつけたいセル”).Interior.Color=定数
※色の種類は下記の表参照
定数 | 文字の色 |
---|---|
vbBlack | 黒 |
vbRed | 赤 |
vbGreen | 緑 |
vbYellow | 黄 |
vbBlue | 青 |
vbMagenta | 紫 |
vbCyan | シアン |
vbWhite | 白 |
⬛︎セルの背景に色をつける
構文では「RGB」「ColorIndex」「定数」での
セルの背景に色をつけるプログラムを紹介しました。
では、実際に各内容を見ていきましょう。
・RGBで色をつける
まずはRGBで色をつける方法を見ていきましょう。
RGBとは「RED:赤」「Green:緑」「Blue:青」の原色を意味しており、
この3色を混ぜて色を指定します。
各数値は「0から255」で指定します。
では構文を再度確認しましょう。
Range(“色をつけたいセル”).Interior.Color=RGB(赤の要素,緑の要素,青の要素)
セルの背景に色をつけたいセルは番地で指定します。
例えばB3のセルを指定するときはRange(“B3”)となります。
Range(“A1:D5”)のように複数範囲でも対応可能です。
一方、RGBの方はRGB(赤の要素,緑の要素,青の要素)のように指示します。
ちなみに各要素の数値が大きければ各原色は濃くなります。
一例を紹介すると下記の通りです。
白:RGB(0,0,0)
黒:RGB(255,255,255)
赤:RGB(255,0,0)
黄色:RGB(255,255,0)
青:RGB(0,0,255)
では実際にプログラムを作成してみましょう。
見本として下図のシートを用意しました。
今回は例で「A1:D5」のセルの背景を「赤」にしたいと思います。
プログラムはこのようになります。
Sub RGBでセルの背景の色を変える()
Range("A1:D5").Interior.Color = RGB(255, 0, 0)
End Sub
では実行してみましょう。
結果はこのようになりました。
A1からD5のセルの背景が赤くなりましたね。
ちなみRGBの数値を知りたい場合は
その他の色から確認が可能です。
「ホーム」タブの「塗りつぶしの色」に「v」がありますよね。
そちらを押すと下に「その他の色」があります。
そこで「ユーザー設定」を選択すると「RGB」の値が確認できます。
・ColorIndexで色を指定する
今度は「ColorIndex」でセルの背景に色をつける方法を紹介します。
ColorIndexは設定によって変わっており、「1から56」で指定します。
ではColorIndexの設定色を確認してみましょう。
まず、「ファイル」タブの「オプション」を選択します。
そこから「保存」を選択し、「ブックの外観の保持」を見てみましょう。
その中の「色」を選択してみましょう。
すると56色の色が表示されます。
この色を基にColorIndexの色が割り振られます。
なのでColorIndexの色はカスタマイズが可能ということです。
ではセルの背景に色をつけてみましょう。
構文はこのようになります。
Range(“色をつけたいセル”).Interior.ColorIndex=インデックス番号
セルの背景に色をつけたいセルは先程と同様に番地で指定します。
インデックス番号は「1から56」の数値です。
今回は見本で「A1:D5」の範囲にインデックス番号「5」で実行してみましょう
プログラムはこのようになります。
Sub ColorIndexでセルの背景の色を変える()
Range("A1:D5").Interior.ColorIndex = 5
End Sub
それでは実行してみましょう。
結果はこのようになりました。
「A1からD5」のセルの背景の色が青色になってますね。
ではインデックス番号と色を確認するプログラムを紹介します。
Sub ColorIndexの設定色を確認する() Dim R, C, ColorNo ColorNo = 1 For C = 1 To 6 Step 1 For R = 1 To 10 Step 1 Cells(R, C).Interior.ColorIndex = ColorNo Cells(R, C) = ColorNo ColorNo = ColorNo + 1 If ColorNo = 57 Then Exit Sub End If Next R Next C End Sub
実行した結果はこちらです。
この結果と、先程のブックの外観の保持の色を比較すると
インデックス番号と設定した色はバラバラに割り振られていることがわかります。
上記プログラムを実行して、
設定がどうなっているのか確認するのも手ですね。
・定数で色を指定する
これまではRGBでの色の指定やColorIndexのインデックス番号のように
数値で色の指定をしましたが、今回は定数で指定します。
構文は下記の通りです。
Range(“色をつけたいセル”).Interior.Color=定数
セルの背景に色をつけたいセルはこれまでと同様に番地で指定します。
色の指定では下記表のようにセルの背景を入力します。
定数 | 文字の色 |
---|---|
vbBlack | 黒 |
vbRed | 赤 |
vbGreen | 緑 |
vbYellow | 黄 |
vbBlue | 青 |
vbMagenta | 紫 |
vbCyan | シアン |
vbWhite | 白 |
黒であれば「vbBlack」、緑であれば「vbGreen」のように
「vb」の後に色のスペルを入れるのが特徴です。
しかしこれだけでは種類が少ないですよね。
そこで「xl」の後に複雑な色を指定することも可能です。
リンクは下記を参照してください☟
XlRgbColor 列挙 (Excel) | Microsoft Learn
では見本を見ていきましょう。
今回は見本で「A1:D5」の範囲に定数を「vbMagenta」で実行してみましょう
プログラムはこのようになります。
Sub 定数でセルの背景の色を変える()
Range("A1:D5").Interior.Color = vbMagenta
End Sub
それでは実行してみましょう。
結果はこのようになりました。
「A1からD5」のセルの背景の色が紫色になってますね。
⬛︎オススメのセルの背景に色をつける方法
これまで3つのセルの背景に色をつける方法を紹介しましたが、
オススメを挙げるとすると「RGB」での指定になります。
理由としては下記の内容になります。
・色の調整や変更を計算や変数で応用できる
・RGBでの指定はどの条件でも変わらない(ColorIndexはPCの設定で変わる)
例を見ていきます。
下記のプログラムを用意しました。
Sub RGBで変数を使用してセルの背景の色を変える() Dim Red As Long, Green As Long, Blue As Long Red = 115 '任意のRの数値を入力 Green = 55 '任意のGの数値を入力 Blue = 100 '任意のBの数値を入力 Range("A1:D5").Interior.Color = RGB(Red, Green, Blue) End Sub
通常RGBの値を数値で入力していましたが、
見本のように変数を活用することができます。
■練習問題
練習問題も別の記事でまとめているので是非参考にしてみてください!
⬛︎公式の説明
わかりやすいように説明したため公式と使用する語句が異なりますが
マイクロソフト公式の説明については下記のリンクを参照してください。☟
Interior.Color プロパティ (Excel) | Microsoft Learn
⬛︎まとめ
いかがだったでしょうか。
VBAでもセルの背景の色を設定できるのは便利ですね。
例えばIFで条件に当てはまるセルの背景色の色を変更するといったことも可能です。
是非参考にしてみてください。
また、文字に色を付ける方法も下記の記事にまとめています☟
【マクロVBA】文字に色をつける・設定・変更! Font.ColorとRGB・Index・定数で変更 ► 独学エクセル塾 (dokugakuexcel.com)
それでは次回の記事でお会いしましょう。