VBA セルの背景色や文字色を設定変更する方法 Excel
Excel VBAでセルの背景色や文字色を設定・変更する方法です。
セルの色を設定する基本は、Color のプロパティ もしくは ColorIndex を設定することです。背景色を設定する場合は Interior に設定し、文字色を設定する場合は Font に設定します。Color へは RGB 関数を使って RGB で示す色の値を指定するか、XlRgbColor 定数で色名を指定します。ColorIndex へは色を数値で表した 1~56 の値を指定します。
ここでは Excel VBAでセルの背景色や文字色を設定する方法 を紹介します。
環境
- Windows 7
- Excel 2016
セルの背景色と文字色を設定する
セル範囲の指定には Range もしくは Cells が使えます。最初に A1 セルの背景色を黒、文字色を白に設定します。設定には RGB 関数を使います。
Range("A1").Interior.Color = RGB(0, 0, 0) ' 背景色
Range("A1").Font.Color = RGB(255, 255, 255) ' 文字色
RGB 関数の使い方は、RGB(赤, 緑, 青) のように、各引数に 0 から 255 までの数値を設定します。
RGB の設定は、「その他の色」を選択し、色の設定画面を開きます。
「ユーザー設定タブ」を開けば、下に色の数値が出ているので参考にしてみてください。
次に A2 セルの背景色をアリスブルー、文字色をコーンフラワーブルーに設定します。設定には XlRgbColor 定数で色名を指定します。
Range("A2").Interior.Color = XlRgbColor.rgbAliceBlue ' 背景色
Range("A2").Font.Color = XlRgbColor.rgbCornflowerBlue ' 文字色
XlRgbColor 定数は、全142色です。「XlRgbColor.」の後に候補が出てきます。Ctrl + j もしくは Ctrl + Space でも候補が出てきますので参考にしてみてください。
MSDN に色名の表がありますので、参考にどうぞ。
最後に A3 セルの背景色を黄、文字色を赤に設定します。こちらは ColorIndex を指定します。
Range("A3").Interior.ColorIndex = 6 ' 背景色
Range("A3").Font.ColorIndex = 3 ' 文字色
ColorIndex は、「ファイル」-「オプション」-「保存」メニューを選択し、画面下の「色」ボタンを押下すると確認できます。
では早速実行してみましょう。標準モジュールを追加して下記をコピペします。
Public Sub ColorSamples()
Sheet1.Range("A1").Value = "RGB"
Sheet1.Range("A1").Interior.Color = RGB(0, 0, 0) ' 背景色
Sheet1.Range("A1").Font.Color = RGB(255, 255, 255) ' 文字色
Sheet1.Range("A2").Value = "XlRgbColor"
Sheet1.Range("A2").Interior.Color = XlRgbColor.rgbAliceBlue ' 背景色
Sheet1.Range("A2").Font.Color = XlRgbColor.rgbCornflowerBlue ' 文字色
Sheet1.Range("A3").Value = "ColorIndex"
Sheet1.Range("A3").Interior.ColorIndex = 6 ' 背景色
Sheet1.Range("A3").Font.ColorIndex = 3 ' 文字色
End Sub
「SUB/ユーザー フォームの実行」をクリックすると、こうなります。
おおおー、背景色と文字色が設定されたー^^
セルの背景色と文字色をクリアする
セルの背景色と文字色のクリアには ColorIndex に 0 を指定します。
Range("A1").Interior.ColorIndex = 0 ' 背景色
Range("A1").Font.ColorIndex = 0 ' 文字色
文字色のクリアには RGB 関数を使って、自動と同じく黒にする方法もあります。
Range("A1").Font.ColorIndex = RGB(0, 0, 0) ' 背景色
では「セルの背景色と文字色を設定する」で設定した色をクリアしてみましょう。下記コードを標準モジュールにコピペします。
Public Sub ColorClear()
Sheet1.Range("A1").Interior.ColorIndex = 0 ' 背景色
Sheet1.Range("A1").Font.ColorIndex = 0 ' 文字色
Sheet1.Range("A2").Interior.ColorIndex = 0 ' 背景色
Sheet1.Range("A2").Font.ColorIndex = 0 ' 文字色
Sheet1.Range("A3").Interior.ColorIndex = 0 ' 背景色
Sheet1.Range("A3").Font.ColorIndex = 0 ' 文字色
End Sub
「SUB/ユーザー フォームの実行」をクリックすると、こうなります。
おおおー、背景色と文字色がクリアされたー^^
カラーパレットを作る
せっかくなので ColorIndex のカラーパレットを作ってみましょう。
仕様:
横2列を使って ColorIndex の番号と色を順番に並べます。2列の左側にはインデックス番号を表示し、文字色を ColorIndex の色に設定します。右側には文字は設定せず、背景色をColorIndex の色に設定します。縦は10行まで表示し、以降は次の2列に表示します。これを繰り返し、全56色をシート2に表示します。
下記のコードを標準モジュールをにコピペします。
Public Sub ColorIndexPalette()
Dim ColorIndex As Integer
Dim Row As Integer
Dim Col As Integer
ColorIndex = 1
For Col = 1 To 12
For Row = 1 To 10
' 列が偶数の場合
If Col Mod 2 = 0 Then
Sheet2.Cells(Row, Col - 1).Value = ColorIndex
Sheet2.Cells(Row, Col - 1).Font.ColorIndex = ColorIndex
Sheet2.Cells(Row, Col).Interior.ColorIndex = ColorIndex
If ColorIndex = 56 Then ' 全56色
Exit Sub
End If
ColorIndex = ColorIndex + 1
End If
Next Row
Next Col
End Sub
「SUB/ユーザー フォームの実行」をクリックすると、こうなります。
おおおー、カラーパレットが出来上がったー^^
XlRgbColor列挙
MSDN のサイトでは、色の値しか出ていなくて、正直どんな色なのか判断できませんよね。いちいち XlRgbColor を指定してチェックするのも面倒だし。ということで、どんな色なのかを全部シート3へ出力してみましょう。
まず MSDN のサイトから表をコピーして、Excel に値を貼り付けます。
次に、下記のコードを標準モジュールをにコピペします。
Public Sub XlRgbColorPalette()
Dim Row As Integer
For Row = 2 To 143 ' 全142色
Sheet3.Cells(Row, 2).Interior.Color = Sheet3.Cells(Row, 2).Value
Next Row
End Sub
「SUB/ユーザー フォームの実行」をクリックすると、こうなります。
おおおー、セルに色がついたー^^
まとめ
Excel VBAでセルの背景色や文字色を設定する方法を紹介しました。
セルの色の設定は実務でも結構使います。セルの背景色や文字色を赤や黄色に変えることでアラート効果もありますし、シート全体の見栄えを良くしたりもできます。
今回作ったものはこちらにサンプルを置いておきますが、ダウンロード後の実行や修正においては全て自己責任でお願いします。
おつかれさまでした。