【Excelマクロ】色

Excelマクロ

色の考え方

Excelを操作する上で「色」を使う場面としては、次のような場面です。

・文字の色
・セルの背景色

この2つについては、「ホーム」タブにボタンがあり、そのボタンを押すとパレットと呼ばれる、色の一覧が出てきます。

このパレットの中で自分が使いたい色をクリックすると「文字の色」や「セルの背景色」を変更することができます。

マクロの記録でのコード

例えば、「セルの背景色」をこの中から「赤」にすることを考えていきます。

「マクロの記録」という実際にExcelの動作を行うことでコード化してくれる機能を使って、上記の動作を行うと次のようなコードが出来ます。

With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With

ぱっと見、かなり難しく感じないでしょうか?

最初に見るコードとしては、コードが多すぎて、読み解くのが大変です。

シンプルな色の設定

実は色の設定はもっと簡単に設定をすることができます。

特に原色の「赤」ということであれば、ColorIndexプロパティを使用すれば、次のように記載すれば色をつけることができます。

Cells(1,1).Interior.ColorIndex = 3

ColorIndexは色には「カラーパレット」というものがあり、カラーパレットにはインデックス番号というものがあり、原色の赤だとインデックス番号が「3」のため、上記のようなコードになります。

先ほどのものと比べると1行で済んでいるため、非常にシンプルだと思いませんか?

これは色の設定方法の一つのColorIndexプロパティを使った方法で、色の設定は主に2つあります。

①ColorIndexプロパティ
②Colorプロパティ

ColorIndexプロパティ

ColorIndexプロパティを使用するには、「カラーコード」と呼ばれる「色に番号がついているコード番号」が必要です。

一例を挙げると次の5つがあります。

1.黒
2.白
3.赤
4.黄緑
5.青

ColorIndexで使用できるコードは全部で56色になっています。そのため、細かな色指定をするためには向いておらず、細かな色指定をしたい場合にはColorプロパティを使用します。

Colorプロパティ

Colorプロパティの設定については「RGB」もしくは「Hex」で指定します。

RGBやHexという単語自体はあまり聞きなれないかと思います。

また、さらにややこしいことを言うと10進数と16進数という考え方で成り立っています。

RGB

順を追って説明すると、 「RGB」は「Red(レッド:赤)」「Green(グリーン:緑)」「Blue(ブルー:青)」の3色の頭文字をとったもので「色の三原色」と言われています。

絵の具を混ぜ合わせるイメージを持っていただくと分かりやすいです。

これは10進数という数字で表されるもので、10進数とは、普段私たちが数を数えるときに使う1、2、3、・・・9、10、11・・・と、10になったら、一の位だけでなく、十の位が1になる、というものです。

この10進数を利用して、0〜255(大きい方が濃い)の数値を、R、G、Bそれぞれで表していて、「赤」については、次のようになります。

R 255
G 0
B 0

「Red(赤)」を一番濃くして、「Green(緑)」と「Blue(青)」は0なので使用しない、つまり、「赤」になるわけです。

それぞれの割合によって色を表現しています。

この理屈で行くと、Gを255、RとBを0にすると、「緑」になる、ということです。

これを一行で表すと「RGB(255,0,0)」が「赤」を表します。

このようにそれぞれ「色の三原色」をどのように組み合わせるか、0〜255の数値で組み合わせて色を表現するので約167万色を表現できます。

これについては、普段はあまり意識しませんが、色の設定の部分で表示されているものです。

上記の例では白のため、「RGB(255,255,255)」となっています。

そのため、自分で色を設定する場合には、エクセル上で普段通り色を設定した上で、この「色の設定」を見れば、RGBの値をいくつにすればよいか、わかります。

ここの数値を見て、VBAのコードに記載することで希望の色に設定することができます。

Hex

Hexって聞いたことありますか?

一番馴染みがないものかもしれません・・・

16進数というもので表現されていて、詳しくは次回の内容としますが、0〜F(0〜9とA〜F)で表現します。

先ほどの「色の設定」の一番下部に「Hex」があり、白は「#FFFFFF」と記載されています。

このように「#」と「16進数」(0〜F)を組み合わせて表現をします。この「#FFFFFF」はRGBで言うと「RGB(255,255,255)」と同様の意味になります。

ちなみに「赤」は「#FF0000」と表現します。

ただし、VBA上では「赤」は「&H0000FF」と表現します。VBA上では「&H」から始めます。

ややこしいことをお伝えしていますが、詳しくは次回お話しします。

今回はHexは「なんかややこしそう・・・」ぐらいで大丈夫です。

まとめ

色については、次の3つの方法で設定をすることができます。

①インデックス番号(ColorIndex)
②RGB
③Hex

①③については、「色の設定」でも簡単にわからないので、②については「色の設定」を見ることでわかるので、それをそのままコードの数値に設定してあげれば良いだけです。

細かく色を設定するのであれば、私としては②RGBをお勧めします。

コメント