【Excel VBA】セルに色を付ける、セルの色を取得する方法

Excel VBA セルの色を設定・取得する方法

Excel VBAでセルに色を付ける方法と、セルの色を取得する方法を説明します。

セルの色には、文字の色とセルの背景色の2種類があり、それぞれを設定するプロパティは以下になります。設定する値は数値型になります。

  • 文字色:Range(セル範囲).Font.ColorもしくはCells(行, 列).Font.Color
  • 背景色:Range(セル範囲).Interior.ColorもしくはCells(行, 列).Interior.Color

セルに色をつける

Font.ColorとInterior.Colorプロパティを設定して、文字色と背景色を設定します。

プロパティに設定する値は数値型になり、設定方法は以下の3種類の方法があります。1はRGB形式を数値型に変換したもの、2はRGB形式、1はVBAで用意されているXlRgbColorという定数です。

背景色をイエローグリーンにする例

  1. Range(セル範囲).Interior.Color = 3329434
  2. Range(セル範囲).Interior.Color = RGB(154, 205, 50)
  3. Range(セル範囲).Interior.Color = rgbYellowGreen

Colorプロパティの設定値を探したい方は以下のサイトが分かりやすいので参照ください。

参考 【Excel VBA】Colorプロパティの設定値 XlRgbColor定数と色の対応表(アルファベット順)Officeのチカラ
数値はどう決まっているのか?

RGB形式の各数値に1(=256の0乗)、256(=256の1乗)、65536(=256の2乗)をかけて、合計した値になります。イエローグリーン = 3329434 を例とすると以下のようになります。

154 * 256^0 + 205 * 256^1 + 50 * 256^2 = 3329434

Interior.Colorプロパティで背景色をつける

セルに色を付けていく準備として、背景色白、文字色黒のセルを用意します。

まずは背景色を青に変更します。A1~A3にて、数値、RBG、XlRgbColorですべて同じ色になることを確認してみます。下のソースを実行すると、背景色が変更されるので試してみてください。

背景色を付ける

copy

Sub SetInteriorColor()
    
    Dim sheet As Worksheet
    Set sheet = ActiveSheet
    
    sheet.Range("A1").Interior.Color = 16711680
    sheet.Range("A2").Interior.Color = RGB(0, 0, 255)
    sheet.Range("A3").Interior.Color = rgbBlue
    
End Sub

Font.Colorプロパティで文字色をつける

次に、文字色を黒から白に変えてみます。下のマクロを実行すると、文字色が白に変更されることを確認できます。

文字色をつける

copy

Sub SetFontColor()
    
    Dim sheet As Worksheet
    Set sheet = ActiveSheet
    
    sheet.Range("A1").Font.Color = 16777215
    sheet.Range("A2").Font.Color = RGB(255, 255, 255)
    sheet.Range("A3").Font.Color = vbWhite
    
End Sub

セルの色を取得する

セルの色を取得すると言っていますが、厳密には色を設定している数値を取得する、ということになります。

数値を取得するためには、変数を用意して、そこにFont.ColorまたはInterior.Colorプロパティを代入すればOKです。

ただ、Colorプロパティを設定するときには3種類の方法がありましたが、取得するときには数値型だけになります。

Interior.Colorプロパティから背景の色を取得する

色を設定したセルを利用して、背景色を取得してみます。取得できたことを確認するためにメッセージボックスに値を出力するようにしています。

背景色に設定した、rgbBlue = 16711680が取得できています。

背景色を取得する

copy

Sub GetInteriorColor()

    Dim sheet As Worksheet
    Dim a1InteriorColor As Long
    
    Set sheet = ActiveSheet
    
    a1InteriorColor = sheet.Range("A1").Interior.Color
    MsgBox a1InteriorColor

End Sub

Font.Colorプロパティから文字の色を取得する

文字色を取得してみます。

 文字色に設定した、vbWhite= 16777215が取得できています。

文字色を取得する

copy

Sub GetFontColor()

    Dim sheet As Worksheet
    Dim a1FontColor As Long
    
    Set sheet = ActiveSheet
    
    a1FontColor = sheet.Range("A1").Font.Color
    MsgBox a1FontColor

End Sub

複数セルに設定されているColorプロパティを知りたいとき

Excelを使っていると、「このセルの色どれかわからない…」ということがあり、Colorプロパティを取得したいと思うことがあります。

そんなとき、例えば以下の図のように複数のセルのInterior.Colorプロパティを取得するマクロを作成しました。

使い方は、Colorプロパティを知りたいセルを選択して、マクロを実行するだけです。マクロが実行されると、選択したセルの値にColorプロパティが設定されます。

複数セルの背景色を取得する

copy

' 選択したセルの背景色を取得して、選択したセルの値に設定する
Sub GetRangeInteriorColor()
        
    Dim rng, rngs As Range
    
    Set rngs = Selection
    
    For Each rng In rngs
        rng.Value = rng.Interior.Color
    Next rng

End Sub

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です