和風スパゲティのレシピ

日本語でコーディングするExcelVBA

セルの背景色を設定する - Interior.Color

セルの背景色を設定するInteriorプロパティについて解説します。

基本構文

設定セルまたはセル範囲.Interior.Color = RGB(R値, G値, B値)

サンプルコード

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

' 色定数やカラーパレット番号でも設定可能
Range("A1:C3").Interior.Color = vbRed
Range("A1:C3").Interior.ColorIndex = 3 ' 赤色

解説

セルの背景色を設定するには、
RangeオブジェクトのInteriorプロパティを使用します。

  • RGB値やカラー定数で指定する場合はInterior.Color
  • カラーパレット番号で指定する場合はInterior.ColorIndex

に値を代入します。

背景色を解除する

セルの背景色を「色なし」にするには、以下のいずれかのコードを実行します。

Range("A1:C3").Interior.ColorIndex = 0
Range("A1:C3").Interior.Pattern = xlNone

「塗りつぶしを解除」という意味では後者のPatternが正規のコードと思いますが、
カラーパレットの0番目が「色なし」のため前者でも設定が可能です。

前者の方が覚えやすいので、私は前者で書いています。

背景色を調べる/コピーする

Interior.Colorはプロパティですので、設定値を読み取ることができます。

Debug.Print Range("A1").Interior.Color
' ↑A1セルのColor値(13693658のような数値)が表示されます。

この時表示される値は「13693658」のような数値なのですが、
これはRGB値をB*255*255+G*255+Rで計算した値です。


背景色は3つの整数ではなくこの1つの整数で記憶されているため、
普通にプロパティを取得してもRGBそれぞれの値はわかりません。

よってR,G,B値をそれぞれ調べたい場合は、セルの書式設定を開いて確認するか、
RGB値→各値の変換関数を用意する必要があります。


といってもセルの背景色の設定にはRGB関数を必ず使う必要はなく、
この整数(RGB値)をそのまま使用しても背景色を設定することができます。

↓同じ設定
Range("A1").Interior.Color = 13693658
Range("A1").Interior.Color = RGB(218, 242 ,208)

 
よってセルの背景色を他のセルの背景色にコピーするような場合は、
書式貼付やRGB値をそれぞれ調べる必要はなく、以下のコードで実行可能です。

' A1セルの背景色をC1セルの背景色に
Range("A1").Interior.Color = Range("C3").Interior.Color

 
今回の.Interior.Colorと同様、
「Rangeオブジェクト.プロパティ = Rangeオブジェクト.プロパティ」
という記述でそのプロパティのコピーができますのでこの仕様は覚えておきましょう。


また、もう一つのテクニックとして、イミディエイトウィンドウに

?Selection.Interior.Color

と入力することで、選択セルのRGB値を調べることができます。

この時出力された値をそのままコードに使っても、
そのセルに使った色に設定するコードが書けますので覚えておきましょう。

' イミディエイトウィンドウにて
?Selection.Interior.Color ' ← 13693658 のようにRGB値が表示される

' メインコードでその数値を使う
Range("A1").Interior.Color = 13693658

 

おまけ:お気に入りのRGB値を保存しておく

上記の「RGB値」を変数や定数で定義しておけば、

Const 見出し色 = 13693658

' メインコードで定数を使う
Range("A1").Interior.Color = 見出し色

このように使いまわす色の設定を管理することができます。


これをEnum定数と組み合わせると、

' 汎用関数モジュールの上部などに
Public Enum Color背景_薄色
    灰 = 14277081= 14079740= 14083324= 13431551= 14348258= 16247773= 16771059
End Enum

' メインコード
Range("A1").Interior.Color = Color背景_薄色.

こんな風にお気に入りのカラーパレットを設定しておくこともできます。


Enumにすることで選択肢から選べるようになのがなかなか便利ですね。
Colorの種類選択肢
Colorの色選択肢


よく使う色の組みあわせがある方は、Enum定数の採用も考えてみてください。

詳しくはこちらの記事をどうぞ
www.limecode.jp