「Excel]VBAでセルの背景色(56色)をセルに表示させる方法

 

こんばんは、こんにちは、おはようございます。( ノ゚Д゚)おやすみなさい! とっちーです。

本日は、VBAでexcelシートのセルに使用できる基本の56色を表示させてみるコードを作成してみました。

ただ表示させただけですが。

実は、これには続きがあります(未定)を期待してワクワクしながらみてね。

 

 

56色パレットを作ってみる

 

2007以降のExcelのセルで取り扱える色数(いろかず)は、2003以前に比べて大変増えました。目視では判断しにくいのですがカラフルです。そんな多色なパレットを作成したらいくつセルがいるのでしょう。色の数だけです。はい。

 

なので今回は、基本の56色パレットを作成してみました。

 

以下のコードは、シート上に56色の色とColorIndex番号を表示させてみるコードになります。

 

 

使用した変数は、長整数型Longを使用しておりますが、整数型のIntegerでも問題ありません。

では、早速変数の宣言をしてみましょう。

 

Dim RCNT As Long
Dim CCNT As Long
Dim YCNT As Long

Dim WS As Worksheet

 

RCNTは、行カウントにCCNTは列カウントで変数を代入させます。YCNTは色をカウントさせる役目です。

 

WSは、オブジェクト型を代入するための変数です。今回はWorksheetを使用します。

 

For~Next文の繰り返しでも作成可能ですが、Do~Loopの~になるまでのuntil判断文で作成してみました。

 

まず、オブジェクト型変数をセットしましょう。

Set WS = ActiveSheetを指定します。 ActiveSheetは、現在表示されているシートのみで作成するときに使用してみましょう。

 

整数型変数RCNT・CCNT・YCNTには、0を代入しておきましょう。

 

Set WS = ActiveSheet

RCNT = 0
CCNT = 0
YCNT = 0

Do
Do
Cells(2 + RCNT, 3 + CCNT).Interior.ColorIndex = 1 + YCNT

Cells(3 + RCNT, 3 + CCNT).Value = 1 + YCNT

YCNT = YCNT + 1
CCNT = CCNT + 1
WS.Cells(2, 1).Value = “↑選択_色”
Loop Until CCNT > 7
Cells(2 + RCNT, 2).Value = “色”
Cells(3 + RCNT, 2).Value = “ColorIndex”
CCNT = 0
RCNT = RCNT + 2

Loop Until YCNT >= 56

 

 

.Interior.ColorIndexで色を設定

 

「Interior」は、セルの色を指定するときに活用するオブジェクトです。

Rangeオブジェクトで「Interior」プロパティに「Interior」オブジェクトに「ColorIndex」プロパティを設定して、背景色の値設定をしてみましょう。

 

構文~単発

Range.Interior.ColorIndex = 値

 

もしくは、変数で「Interior」のオブジェクト型の宣言を行って、忘れずにSet文で代入しましょう。

またRangeオブジェクトに対し、それ以外の設定をしたいときコードをまとめて記述する方法もおススメします。他の指示も可能になるので見やすくなります。

 

構文

Dim 変数名 As Interior

Set 変数名=Range(”セル番地”).Interior

Interior.ColoIndex =色のインデックス番号(1から56)

 

Do~Loopの繰り返しでセルに背景色をセットする

 

Do~Loopの説明は、こちらをお読みくださいますようお願いいたします。

リンク先

 

今回、Do~Loopを2組使用します。

一つ目は、パレットの色彩である56色をセルにセットするために56回分を判断する役割を外側のDo~Loop持たせます。

もう一つは、上記の判断の内側にCellsを用いて列を8列判断する役割をDo~Loopに持たせます。

 

Do
  Do
    Cells(2 + RCNT, 3 + CCNT).Interior.ColorIndex = 1 + YCNT

    Cells(3 + RCNT, 3 + CCNT).Value = 1 + YCNT

    YCNT = YCNT + 1
    CCNT = CCNT + 1
    WS.Cells(2, 1).Value = “↑選択_色”
  Loop Until CCNT > 7

  Cells(2 + RCNT, 2).Value = “色”
  Cells(3 + RCNT, 2).Value = “ColorIndex”
 

  CCNT = 0
  RCNT = RCNT + 2

Loop Until YCNT >= 56

 

上記コードの の数値は、定数になります。

 

Cells(2,3)を基本軸として、整数型変数RCNT(行用の変数)とCCNTを(列用の変数)を基本軸に加算してセルを移動させるようにしています。

 

Cells(2 + RCNT, 3 + CCNT)のCCNTは基本軸3の定数に演算子の”+”を用いて列のセル番地を加算させ、RCNTは基本軸2の定数に演算子の”+”を用いて行のセル番地を加算させるようにしています。

 

CCNTは、8列使用したいので>=8 もしくは>7と記述しています。演算子の記述次第で動作が変動しますので、数値を確認してコードを作成しましょう。

当初各整数型の変数には、0を代入しています。

 

Cells(2,3)つまりRange(”C2”)から背景色をセットしたいので以下のコードを記述します。

(変数には0がセットされています)

 

Cells(2 + RCNT, 3 + CCNT).Interior.ColorIndex = 1 + YCNT

Cells(2 + 0, 3 + 0).Interior.ColorIndex = 1 + 0

Cells(2 , 3).Interior.ColorIndex = 1と判断されて、Range(”C2”).Interior.ColorIndex = 1

 

セル番号C2には、カラーインデックス番号の1の背景色にするコードになります。

 

また、背景色をセットするとともに一段下のセルにカラーインデックス番号を表記させてみたいので同様に変数を使用しています。ただし行数の始まりは1行下になりますので3を定数としています。

 

Cells(3 + RCNT, 3 + CCNT).Value = 1 + YCNT

Cells(3 , 3).Value = 1と判断されて、Range(”C3”) = 1

 

セル番号C3には、カラーインデックス番号の1の数値をセットするコードになります。

 

そして、上記のコードを8回繰り返すようにDo~LoopのあとにLoop Until CCNT > 7とコードを記述し7回より多い数になるまで繰り返すようにしています。

8列目まで背景色と色番号が記載されましたので、2行目にここで移動させるコードを記述しないと次の行に移動しません。

 

CCNT = 0は、列を8列目まで移動させていたカウントを最初の列に戻すため0を代入します。

RCNT = RCNT + 2は、セルの背景色とその一行下に背景色の番号ををセットしているため2行分移動させる必要があります。

そこで2を加算させるようにしましょう。

この列の移動と行の移動を5色数(いろかず)である56回分繰り返すまでコードを実行させます。

 

最後のLoop Until YCNT >= 56とコードを記述しています、56は56回をこえると終了ですので作業をやめてください~って、Do~Loopに繰り返しの処理の終了を連絡させるようにしています。

 

まとめ

 

今日は、基本色をシートに表示させるためにDo~LoopやCellsを使用してみました。

さらに変数の使用方法にも少しだけ言及しました。

 

単に色をシステムから取得してシートのセルの背景色として埋め込むのですが。

Do~Loopの繰り返しの仕組みで56色をセルに表示させてみました。

 

 

VBAでコードを作成するとき記述するコードにたくさんありがとうございます。

 

難しく考えず、短く明るく、よろしくって思いながら作ってみると、案外うまく出来るかも。

 

 

スポンサーリンク