【VBA】QBColorとRGB関数でカラーコードを取得

【VBA】QBColorとRGB関数でカラーコードを取得

QBColor関数の解説 | RGB関数の解説 | 具体的な例とサンプルコード | その他のポイントと注意点

QBColor関数の解説

VBAには、昔からあるQBColor関数があります。この関数は、0から15までの整数(カラーインデックス)を指定することで、 その番号に対応したカラーコード(Long型の数値)を返します。QBColor関数は、QBasicなど古いプログラミング言語から受け継がれており、 シンプルな色指定に便利です。

QBColor関数に与える数値は、基本的には決められた16色(0~15)の中から選びます。各色は以下のように対応しています(一般的な例):

インデックス 色の名称 イメージ(RGB)
0 黒 (Black) RGB(0, 0, 0)
1 青 (Blue) RGB(0, 0, 128)
2 緑 (Green) RGB(0, 128, 0)
3 シアン (Cyan) RGB(0, 128, 128)
4 赤 (Red) RGB(128, 0, 0)
5 マゼンタ (Magenta) RGB(128, 0, 128)
6 黄 (Yellow) RGB(128, 128, 0)
7 白 (White) RGB(192, 192, 192)
8 濃い灰色 (Dark Gray) RGB(128, 128, 128)
9 明るい青 (Light Blue) RGB(0, 0, 255)
10 明るい緑 (Light Green) RGB(0, 255, 0)
11 明るいシアン (Light Cyan) RGB(0, 255, 255)
12 明るい赤 (Light Red) RGB(255, 0, 0)
13 明るいマゼンタ (Light Magenta) RGB(255, 0, 255)
14 明るい黄 (Light Yellow) RGB(255, 255, 0)
15 明るい白 (Bright White) RGB(255, 255, 255)

※ 注意点として、実際の環境やバージョンによっては、上記のRGB値と多少異なる場合もありますが、基本的な考え方は同じです。

RGB関数の解説

VBAのRGB関数は、赤(red)、緑(green)、青(blue)の3つの成分の値(各0~255の整数)を与えて、 その組み合わせからカラーコード(Long型の数値)を生成します。これにより、任意の色を細かく指定することが可能になります。

RGB関数の一般的な書式は以下の通りです:

RGB(red, green, blue)

たとえば、以下の例をご覧ください:

  • RGB(255, 0, 0) → 真っ赤な色
  • RGB(0, 255, 0) → 真っ緑な色
  • RGB(0, 0, 255) → 真っ青な色
  • RGB(255, 255, 255) → 白
  • RGB(0, 0, 0) → 黒
  • RGB(128, 128, 128) → 中間のグレー

このように、RGB関数を使うと、16,777,216通り(\(256 \times 256 \times 256\))の色を指定できるため、より柔軟な色の選択が可能になります。

具体的な例とサンプルコード

ここでは、実際にVBAコード内でQBColor関数とRGB関数を使う例をいくつか紹介します。どちらの関数も、フォームの背景色や文字色、図形の色指定などに利用できます。

QBColor関数を使った例

' QBColor関数を使ってフォームの背景色を変更する例
Sub ChangeBackgroundColorWithQBColor()
    Dim colorValue As Long
    ' 例: 4を指定すると、赤に近い色が返される(環境によっては異なる場合もある)
    colorValue = QBColor(4)
    
    ' UserForm1の背景色を変更する
    UserForm1.BackColor = colorValue
    UserForm1.Show
End Sub
  

上記のコードでは、QBColor(4)により赤系の色を取得し、UserForm1の背景色に設定しています。

RGB関数を使った例

' RGB関数を使って特定の色を設定する例
Sub ChangeBackgroundColorWithRGB()
    Dim colorValue As Long
    ' 赤:255, 緑:165, 青:0 のオレンジ色を作成
    colorValue = RGB(255, 165, 0)
    
    ' UserForm1の背景色をオレンジ色に変更
    UserForm1.BackColor = colorValue
    UserForm1.Show
End Sub
  

この例では、RGB関数を使って「オレンジ色」を作成し、フォームの背景色に設定しています。

図形やセルの色設定での利用例

' ExcelのセルにRGB関数で指定した色を設定する例
Sub ColorCellWithRGB()
    Dim targetColor As Long
    ' 淡い紫色を作成 (赤:221, 緑:160, 青:221)
    targetColor = RGB(221, 160, 221)
    
    ' アクティブなセルの背景色を設定
    ActiveCell.Interior.Color = targetColor
End Sub

' ExcelのセルにQBColor関数で指定した色を設定する例
Sub ColorCellWithQBColor()
    Dim targetColor As Long
    ' インデックス5を指定(一般的にマゼンタ系の色)
    targetColor = QBColor(5)
    
    ' アクティブなセルの背景色を設定
    ActiveCell.Interior.Color = targetColor
End Sub
  

これらのコードは、Excel VBAでセルの背景色を変更する例です。用途に応じてQBColorとRGBを使い分けると良いでしょう。

その他のポイントと注意点

  • 色のバリエーション:
    QBColorは決まった16色しか使えませんが、RGB関数を使うと非常に多くの色を自由に指定できます。
  • 可読性:
    コード内で直接RGB(255, 0, 0)と記述すると「赤」と理解しやすいですが、QBColor(4)のように書くと、環境や仕様により色が異なる可能性があるため、必要に応じてコメントを残すと良いでしょう。
  • 互換性:
    古いプログラムやレガシーコードではQBColorが多用されている場合がありますが、新規の開発ではより柔軟なRGB関数の使用が推奨されることが多いです。
  • 数値の範囲:
    RGB関数の各引数は0~255の範囲で指定する必要があります。範囲外の値を指定するとエラーになるため注意してください。
  • MathJaxによる数式表現:
    色の組み合わせの総数は、\(256 \times 256 \times 256 = 16,777,216\) 通りとなり、RGB関数の柔軟性の高さを示しています。

このように、用途や目的に応じてQBColor関数とRGB関数を使い分けることで、より直感的に色を管理・指定することができます。

VBAでのカラー指定についての理解が深まることで、ユーザーフォームやExcelシートのデザインなどがより魅力的に仕上がります。

QBColor関数の解説 | RGB関数の解説 | 具体的な例とサンプルコード | その他のポイントと注意点

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です