【Excel VBA】セルの背景色を設定・取得する(Color/ColorIndex)

はじめに

今回は、セルの背景色を設定する方法を解説します。
色の設定方法について、複数パターン(RGB・インデックス番号・定数など)での指定方法を掲載。
色をクリアする方法も併せて解説します。

この記事を読むメリット
  • セルの背景色を設定する方法が分かります。
  • 基本的な色から、マイナーな色まで対応しています。
  • 色をクリアする方法も解説します。
  • コピペで使える実践的なコードを掲載しています。

前提

関連プロパティ

セル背景色を設定するには、以下2パターン存在します。
色を指定する際、「RGB形式・定数」で指定するか、「インデックス番号」で指定するかにより使い分けましょう。

また、背景色をクリア(色なし)にするには、ColorIndexプロパティを使用してください。
詳しい使い方は後述します。

#プロパティ説明
1ColorRGB形式・定数にてセルの背景色を設定。
RGB形式・定数にてセルの背景色を取得。
2ColorIndex色のインデックス番号を指定し、セルの背景色を設定。
セルの背景色のインデックス番号を取得。
色なしの設定も可能。
セル背景色 – 関連プロパティ

RGBやインデックス番号に対応した色について

代表的な色のRGBと、インデックス番号を掲載します。
ここでは、注目してほしい点を目立たせる「赤と黄色」、無効や削除の意味を持つ「グレー」をご紹介します。

#RGBColorIndex
1RGB(255, 0, 0)3
2RGB(255, 255, 0)6
3RGB(128, 128, 128)16
代表的な色

上記以外の色のRGBやインデックス番号を詳しく知りたい方は以下の記事にて解説しています。

基本情報

Colorプロパティ

RGB形式でセルの背景色を設定したい場合、Range.InteriorオブジェクトのColorプロパティを使用します。
また、ColorプロパティはRBG形式だけでなく定数での指定も可能です。

構文

構文

RangeObject.InteriorObject.Color = 設定値

設定値

RGB値 及び 「XlRgbColor」定数を指定します。

「XlRgbColor」定数については後述します。

定数

Colorプロパティでは、「XlRgbColor」定数も指定可能です。
※定数の数が多いため、確認したい方は以下を展開したうえご確認ください。

XlRgbColor定数
#定数
1rgbBlack
2rgbGrey
3rgbSilver
4rgbWhite
5rgbRed
6rgbBlue
7rgbAqua
8rgbTeal
9rgbGreen
10rgbLime
11rgbOrange
12rgbGold
13rgbYellow
14rgbPurple
15rgbPink
16rgbBrown
17rgbDarkRed
18rgbOrangeRed
19rgbDarkOrange
20rgbTomato
21rgbSalmon
22rgbDarkGreen
23rgbForestGreen
XlRgbColor列挙型 – 定数

ColorIndexプロパティ

インデックス番号でセルの背景色を設定したい場合や、セル背景色をクリアする場合は、Range.InteriorオブジェクトのColorIndexプロパティを使用します。

構文

構文

RangeObject.InteriorObject.ColorIndex = 設定値

設定値

インデックス番号 及び「XlColorIndex」定数を指定します。

「XlColorIndex」定数については後述します。

定数

ColorIndexプロパティでは、「XlColorIndex」定数も指定可能です。

#定数説明
1xlColorIndexAutomatic色を自動的に設定
2xlColorIndexNone色なし
XlColorIndex列挙型 – 定数

サンプルコード

セルの背景色を設定する

サンプルコード
Public Sub setCellColor()

    ' A1セルの背景色を 黄色 にする
    Range("A1").Interior.Color = RGB(255, 255, 0)

    ' A2セルの背景色を 灰色 にする
    Range("A2").Interior.Color = rgbGrey

    ' A3セルの背景色を 赤色 にする
    Range("A3").Interior.ColorIndex = 3
End Sub

セルの背景色を取得する

サンプルコード
Public Sub getCellColor()
    Dim colorVal As Long        ' Colorプロパティ返却用
    Dim colorIndexVal As Long   ' ColorIndexプロパティ返却用

    ' A1セルの背景色を取得
    colorVal = Range("A1").Interior.Color

    ' 取得した背景色を B1セルに反映
    Range("B1").Interior.Color = colorVal

    ' A2セルの背景色を取得
    colorIndexVal = Range("A2").Interior.ColorIndex

    ' 取得した背景色を B2セルに反映
    Range("B2").Interior.ColorIndex = colorIndexVal
End Sub

ColorIndexプロパティで背景色を取得する場合、セルの背景色がColorIndexのインデックス番号に対応しているかを確認ください。
意図しないインデックス番号が取得されます。

セルの背景色をクリアする

サンプルコード
Public Sub clearCellColor()

    ' A1セルの背景色を取得
    Range("A1").Interior.ColorIndex = xlColorIndexNone
End Sub

シートの背景色をクリアする

サンプルコード
Public Sub clearAllCellColor()

    ' 1番目のシートのセル背景色を全てクリアする
    Worksheets(1).Cells.Interior.ColorIndex = xlColorIndexNone
End Sub

最後に

今回は、セルの背景色を設定する方法について解説しました。

2つのパターンを解説しましたが、個人的にはColorプロパティが好きです。
理由は、「定数で色を指定すると誰が読んでも何色に変更しているかが分かりやすいため」です。

使用用途に応じ、使い分けをしてみてください!

オススメの書籍
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

大手外資系コンサルティングファーム勤務。ExcelVBA歴は8年。金融関係のプロジェクトにて約100万レコードを処理するマクロの開発実績あり。ExcelVBAの基礎・応用情報を発信中。

コメント

コメントする

CAPTCHA