RGB関数で色番号一覧表
マクロ講座38回
For~Next の入れ子を3重構造で使う
RGB関数で色番号一覧表をつくるマクロ
Excelのマクロでセルの背景色やフォントの色を指定するときは、ColorIndexプロパティを使う方法と、Colorプロパティ(Excel2007以降)を使う方法の2通りあります。
37回では、For~Next を入れ子にすることで、ColorIndexをセル範囲に表示しました。
今回は、もっと多彩な色を使いたい時のためにRGB関数を使って、色の一覧表を作成します。
(サンプルファイルは、こちらから 2013マクロ講座38回サンプルデータ)
RGBの色の一覧表をマクロで作る
RGB関数で色を指定できるとわかっていても、さて自分のイメージの色がどの番号で指定できるのかを確認する時に便利な一覧です。
Colorプロパティはオブジェクトに応じて適用する色を設定します。色は、RGB関数によって作成された値です。
RGB 関数
書式 RGB(red, green, blue)
red:RGBのR(赤)の割合を0~255の整数で指定します
green:RGBのG(緑)の割合を0~255の整数で指定します
blue:RGBのB(青)の割合を0~255の整数で指定します
なるべく、均等に増加させたいので、255ではなく256で計算することにします。
0~256までを32ずつ増やします。
For~Nextを入れ子で3重構造にしています。
RGB 関数
書式 RGB(red, green, blue)
red:RGBのR(赤)の割合を0~255の整数で指定します
green:RGBのG(緑)の割合を0~255の整数で指定します
blue:RGBのB(青)の割合を0~255の整数で指定します
なるべく、均等に増加させたいので、255ではなく256で計算することにします。
0~256までを32ずつ増やします。
For~Nextを入れ子で3重構造にしています。
Sub rgbirobango() Dim 行 As Integer, 列 As Integer, R As Integer, g As Integer, B As Integer 行 = 0 For R = 0 To 256 Step 32 ' 赤の割合を32づつ増やします。 For g = 0 To 256 Step 32 ' 緑の割合を32づつ増やします。 行 = 行 + 1 ' 行の値に+1します。 For B = 0 To 256 Step 32 ' 青の割合を32づつ増やします。 列 = B / 32 + 1 If R = 256 Then R = 255 If g = 256 Then g = 255 If B = 256 Then B = 255 Cells(行, 列) = R & ", " & g & ", " & B Cells(行, 列).Interior.Color = RGB(R, g, B) If (R + g + B) / 32 < 7 Then Cells(行, 列).Font.ColorIndex = 15 Next Next Next End Sub
For~Nextステートメントの使い方
For~Nextステートメントの考え方
最初に、Forで繰り返し回数を宣言します。
繰り返し回数は、カウンタの変化範囲(開始値と終了値)で指定します。
For~Nextを入れ子で3重構造で使っても、2重構造の時と考え方は同じです。
最初に、Forで繰り返し回数を宣言します。
繰り返し回数は、カウンタの変化範囲(開始値と終了値)で指定します。
For~Nextを入れ子で3重構造で使っても、2重構造の時と考え方は同じです。
RGBの色の一覧表をつくるマクロ
こちらは、もう少し色数を増やすために、16ステップずつ増やしてみました。
コードは最初のマクロと殆ど変わりません。
Sub rgbirobango2() Dim 行 As Integer, 列 As Integer, R As Integer, g As Integer, B As Integer 行 = 0 For R = 0 To 256 Step 16 For g = 0 To 256 Step 16 行 = 行 + 1 For B = 0 To 256 Step 16 列 = B / 16 + 1 If R = 256 Then R = 255 If g = 256 Then g = 255 If B = 256 Then B = 255 Cells(行, 列) = R & ", " & g & ", " & B Cells(行, 列).Interior.Color = RGB(R, g, B) If (R + g + B) / 16 < 10 Then Cells(行, 列).Font.ColorIndex = 15 Next Next Next End Sub
もっとたくさんの色を一覧表にしたい時は、Step 16をStep 8などにしてみると良いでしょう。
今日の講義は以上です。お疲れ様でした。
今日の講義は以上です。お疲れ様でした。