難易度:★★☆(やや難)

※当校のExcel VBAコースを補足する内容となっています。


セルの塗りつぶしや罫線、入力する文字などの「色」は、それぞれの「Colorプロパティ」という属性に値を設定することで適用されます。

設定値の書き方についてはいくつかの方法がありますが、ここでは「RGB関数」を使う方法を使います。

RGB関数の使い方

RGB(赤,緑,青)

引数として、光の三原色であるRed (赤) の割合・Green(緑)の割合・Blue(青)の割合をそれぞれ0~255の範囲の整数で指定します。これらの数値の組み合わせによって、特定の色が表示されます。

Red、Green、Blueの頭文字をとって、RGB関数と呼ばれています。代表的な色の値を以下に示します。

色の名前色見本RGB(赤,緑,青)
RGB(0, 0, 0)
RGB(255, 0, 0)
RGB(0, 255, 0)
RGB(0, 0, 255)
マゼンタRGB(255, 0, 255)
シアンRGB(0, 255, 255)
RGB(255,255, 0)
RGB(255, 255, 255)
色見本

RGB関数を使ってセルの色を設定する

セル[A1]に塗りつぶしの色を設定する場合
Range(“A1”).Interior.Color= 設定値 または Cells(1, 1).Interior.Color = 設定値
と記述します。

設定値を上記のRGB関数を使って

Range(“A1”).Interior.Color = RGB(255,0,0)
 または
Cells(1, 1).Interior.Color = RGB(255,0,0)

と指定すると、A1セルが赤で塗りつぶされます。

RGB関数を使って文字の色を設定する

セル[A1]の文字色を設定する場合
Range(“A1”).Font.Color= 設定値 または Cells(1, 1).Font.Color = 設定値
と記述します。

設定値を上記のRGB関数を使って

Range(“A1”).Font.Color = RGB(0,0,255)
  または
Cells(1, 1).Font.Color = RGB(0,0,255)

と指定すると、A1セルの文字の色が青になります。

Range?Cells?

RangeとCellsはどちらを使ってもいいの?

Range(“A1”) と Cells(1, 1)、どちらもセル[A1]を指定するときに使います。

このセルの色を変えたい、と固定で指定したいならRangeを使う方が分かりやすいです。

「変数や定数を使える」VBAプログラミングでは、数値でセル位置を指定できるCellsを使う方がプログラムの書きやすさや動作速度の点で優れています。

セル範囲の指定方法はまだ他にもあります。慣れてきたら何が一番いい指定方法なのかを考えてみてはどうでしょうか。

色の一覧表を作る

VBAを使って、色の一覧表を作ってみましょう。

色の一覧表

A1セルの塗りつぶし色をRGB(0,0,0) で設定し、引数(Red、Green、Blue)の値をそれぞれ0から255まで10ずつ増やしていきながら下のセルの塗りつぶし色を設定します。Red、Green、Blueそれぞれ処理を繰り返すので3重のループになりますよ。

セルには、引数(Red、Green、Blue)の値を表示しています。RGBの値が255を超えると繰り返し処理が終わるようにしているので、最大値はRGB(255,255,255)ではなく、RGB(250,250,250)になっています。

塗りつぶすセルの位置は、Cells(行, 列).Interior.Color = RGB(R,G,B) で指定します。


Sub 色の一覧表()
    Dim R, G, B, i, j As Long
    i = 1
    j = 1
    For R = 0 To 255 Step 10
        For G = 0 To 255 Step 10
            For B = 0 To 255 Step 10
                Cells(i, j).Interior.Color = RGB(R, G, B)
                Cells(i, j) = R & ", " & G & ", " & B
                If R + G + B < 360 Then Cells(i, j).Font.Color = RGB(255, 255, 255)
                i = i + 1
            Next B
            i = 1
            j = j + 1
        Next G
    Next R
End Sub