Excel VBAの「QBColor 関数」について解説します。
QBColor 関数とは
Excel VBA の QBColor 関数は、指定したカラーインデックス番号に対応するRGB値を表す整数(Long)を返します。
VBAで色を指定する方法の一つが QBColor 関数です。QuickBasic由来の16色をインデックス番号で指定する初心者にも扱いやすいシンプルな関数です。
QBColor 関数の構文や実際の使い方について具体的に解説していきたいと思います。
QBColor 関数(Visual Basic for Applications リファレンス)
構文(引数と戻り値)
Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。
構文
QBColor(color)
引数
指定項目 | 説明 |
---|---|
color | 【必須】範囲 0~15 の整数値を指定します |
引数 color の設定値は次表のとおりです。(対応する戻り値も追記しています)
番号 | 色 | 対応する戻り値 |
---|---|---|
0 | 黒 | 0 |
1 | 青 | 8388608 |
2 | 緑 | 32768 |
3 | 水色 | 8421376 |
4 | 赤 | 128 |
5 | 紫 | 8388736 |
6 | 黄 | 32896 |
7 | 白 | 12632256 |
8 | 灰色 | 8421504 |
9 | 明るい青 | 16711680 |
10 | 明るい緑 | 65280 |
11 | 明るい水色(シアン) | 16776960 |
12 | 明るい赤 | 255 |
13 | 明るい紫(マゼンタ) | 16711935 |
14 | 明るい黄 | 65535 |
15 | 明るい白 | 16777215 |
戻り値
指定色のインデックス番号に対応するRBG値を示す長整数型 (Long) の値が返ります。
カラーインデックス番号に対応する戻り値のRGB値は、前表の3列目に記載しましたのでそちらを参照願います。
解説(使用例)
QBColor 関数の使い方について、サンプルコードを使って解説します。
QBColor 関数の主な使用例
QBColor 関数の使用例を紹介します。
基本的な使用例
セルの背景色などを QBColor 関数で設定する基本的な例のコードと実行結果です。
'■QBColor関数サンプル1(基本的な使用例)
Sub QBColor_sample_01()
'セルの背景色を設定
Range("B1").Interior.Color = QBColor(9) '明るい青
Range("B2").Interior.Color = QBColor(10) '明るい緑
Range("B3").Interior.Color = QBColor(12) '明るい赤
'セルにQBColorの戻り値を入力
Range("A1") = QBColor(9) '=16711680
Range("A2") = QBColor(10) '=65280
Range("A3") = QBColor(12) '=255
'フォントの色を指定
Range("A1").Font.Color = Range("A1") '=QBColor(9)
Range("A2").Font.Color = Range("A2") '=QBColor(10)
Range("A3").Font.Color = Range("A3") '=QBColor(12)
End Sub

・4~6行目:B1~B3の各セルの背景色を QBColor 関数で設定しています。
・8~10行目:A1~A3の各セルに戻り値のRGB値を入力しています。
・12~14行目:A1~A3の各セル内のフォント色を QBColor 関数で設定しています。
条件に応じて色を変える例
A列のセル値に応じて行の背景色を QBColor 関数設定する例と実行結果です。
'■QBColor関数サンプル2(条件による色変更例)
Sub RGB_sample_02()
Dim cell As Range
For Each cell In Range("A1:A10")
If cell.Value Mod 2 = 0 Then
'偶数なら行の背景色を明るい水色(シアン)に
cell.EntireRow.Interior.Color = QBColor(11)
Else
'奇数の場合は塗りつぶさない
cell.Interior.ColorIndex = 0 '塗りつぶしなし
End If
Next cell
End Sub

5行目:Mod を使いセルの値を2で割って余りがなければ偶数、余りがなければ奇数です。
7行目:行全体を取得する EntireRowプロパティを使って指定背景色に塗りつぶします。
10行目:セルに値がないときは、背景色を透明(塗りつぶしなし)にします。
セルを背景色なし(塗りつぶしなし)にするには Interior.ColorIndex = 0 を使います。
全色インデックスを表示する例
QBColor 関数に使用できる16色のカラーインデックスを順番に行へ設定する例と実行結果です。
'■QBColor関数サンプル3(全色インデックスを表示する例)
Sub RGB_sample_03()
Dim i As Integer
For i = 0 To 15
With Cells(i + 1, 1)
.Value = "QBColor(" & i & ")" '塗りつぶす色設定を入力
.EntireRow.Interior.Color = QBColor(i)
End With
Next i
End Sub

4行目:16色のカラーインデックスを順番に行へ設定するように、0~15までループさせます。
6行目:1行目のセルに塗りつぶす色設定コードえを入力します。
7行目:行全体を取得する EntireRowプロパティを使って背景を指定色に塗りつぶします。
おわりに
VBAの関数一覧はこちらからご参照ください。
VBAサンプルファイルダウンロードページのご案内
このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。
ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!
VBA の QRColor 関数は、VBAで色を指定する際に使用できる関数です。色の選択肢こそ16色と限られていますが、シンプルで扱いやすいのが魅力です。特に、レガシーコードの保守や簡易的な色指定には最適です。
QBColor 関数のメリットと活用ポイントは次のとおりです。
以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;幸いです(^^;