【VBA】セルの色を変える方法/文字の色を変える方法
今回はセルの色と文字の色を変える方法を紹介します。
セルの色を変える方法
Sub ChangeInteriorColor()
Cells(1, 1).Interior.Color = vbRed '背景を赤色に変える
End Sub
セルの色を変えたい場合は、まずInteriorプロパティを取得して、その中のColorプロパティを変更します。
いきなりセルの色を変えるのではなく、一旦セルの背景情報を取得して、色を変更しているのだとイメージしてください。
このコードではA1セルの色を赤色に変えています。
(vbRedという定数についても下の方で説明します)
文字の色を変える方法
Sub ChangeFontColor()
Cells(1, 1).Font.Color = vbRed '文字を赤色に変える
End Sub
文字の色を変えたい場合は、まずFontプロパティを取得して、その中のColorプロパティを変更します。
セルの色の場合と同じで、いきなり文字の色を変えるのでなく、一旦フォント情報を取得しているとイメージしてください。
Colorプロパティに使う定数について
ここまでのコードでは、ColorプロパティにvbRedという定数を入れました。
定数 | 色 |
---|---|
vbBlack | 黒 |
vbRed | 赤 |
vbGreen | 緑 |
vbYellow | 黄 |
vbBlue | 青 |
vbMagenta | マゼンタ |
vbCyan | シアン |
vbWhite | 白 |
VBAには色を決めるために8種類の定数が用意されています。
基本的にはこの8種類を使用して、もっと違う色が使いたいとなったらrgbから始まる定数がたくさん用意されているので、選んでみてください。(rgbから始まる定数は下記リンク先を参照)
Sub ChangeInteriorColor()
Cells(1, 1).Interior.Color = RGB(0,0,0)
End Sub
また、RGB関数を用いて(赤,緑,青)を自分で細かく設定することもできます。
ColorIndexプロパティの使用は避けよう
Sub ChangeInteriorColor2()
Cells(1, 1).Interior.ColorIndex = 3'背景を赤色に変える
End Sub
色の指定はColorプロパティでなく、ColorIndexプロパティでも行うことができます。
上のコードのように、数値で色を指定します。
ただし、ColorIndexプロパティで指定する色はエクセルの設定を変えると変わってしまいます。
エクセルで「ファイル→オプション→保存→色」と進むと上の画像のような色のパレットが表示されます。
このパレット上の色を変更していると、ColorIndexプロパティで数値を指定していても、想定したのとは違う色となってしまうかもしれません。
特に、マクロを他の人に配布することを考えている場合は、ColorIndexプロパティではなくColorプロパティの使用をおすすめします。
例外:「塗りつぶしなし」はColorIndexプロパティを使う
セルの色には「塗りつぶしなし」があるのですが、これだけはColorプロパティでは指定することができません。
Sub NoColor()
Cells(1, 1).Interior.ColorIndex = xlNone
End Sub
そのため、この場合のみColorIndexプロパティを使うようにしましょう。
上のプログラムのように、ColorIndexプロパティをxlNoneにすると「塗りつぶしなし」となります。