[Excel VBA]セルの色の設定を自由にできるようになろう
記事のテーマ
  • Excel VBAでセルの文字色や背景色を設定する方法
  • Excel VBAでセルの文字色や背景色を取得する方法
  • Excel VBAでセルの色をクリアする方法

今回は上記のテーマで解説をしていきます。

セルの色はRGB関数やColorIndexプロパティを使用して設定することができます。

セルの文字色を設定する

Cells(1, 1).Font.Color = RGB(255, 0, 0)
Cells(1, 1).Font.ColorIndex = 3

セルの背景色を設定する

Cells(1, 1).Interior.Color = RGB(255, 0, 0)
Cells(1, 1).Interior.ColorIndex = 3

設定の仕方や色の取得の仕方について細かく網羅的に解説をしていくので、是非参考にして頂ければと思います。

[Excel VBA]セルの色を設定する方法:文字色と背景色の設定

まず最初にセルの色を設定する方法について見ていきますが、下記の観点で紹介をしていきます。

  • 色を設定する基本コード
  • セルの範囲の色を設定する
  • 指定したシートのセルの色を設定する

    それぞれ見ていきましょう。

    RGB関数とColorindexプロパティを使用した基本コード

    まずは色を設定する基本コードを見ていきましょう。RGB関数とColorIndexプロパティを使用したもの、それぞれ紹介していきます。

    RGB関数での設定

    RGB関数を使用する場合は下記のように設定を行っていきます。

    Cells(1, 1).Font.Color = RGB(255, 0, 0) ‘A1セルの文字色を設定
    Cells(1, 1).Interior.Color = RGB(255, 0, 0) ‘A1セルの背景色を設定

    「.Font.Color」で文字色を、「.Interior.Color」でセルを塗りつぶしすることができます。

    下記のようにRangeプロパティを使用しても同様に設定することが可能です。

    Range(“A1”).Font.Color = RGB(255, 0, 0) ‘A1セルの文字色を設定
    Range(“A1”).Interior.Color = RGB(255, 0, 0) ‘A1セルの背景色を設定

    ColorIndexプロパティでの設定

    ColorIndexプロパティを使用して設定する場合は下記のように行います。

    Cells(1, 1).Font.ColorIndex = 3 ‘A1セルの文字色を設定
    Cells(1, 1).Interior.ColorIndex = 3 ‘A1セルの背景色を設定

    RGB同様にColorIndexプロパティに関してもRangeプロパティを使用して設定することができます。

    Range(“A1”).Font.ColorIndex = 3 ‘A1セルの文字色を設定
    Range(“A1”).Interior.ColorIndex = 3 ‘A1セルの背景色を設定

    セルの範囲の色を設定する方法

    上記は一つのセルの色を設定する方法について見てきましたが、中には特定の範囲に同じ色を付けたいという場合もあるかと思います。その場合は下記のようにRangeプロパティを使用して設定することができます。

    Range(“A1:C4”).Font.ColorIndex = 3 ‘A1~C4セルの文字色を設定
    Range(“A1:C4”).Font.Color = RGB(255, 0, 0) ‘A1~C4セルの文字色を設定
    Range(“A1:C4”).Interior.ColorIndex = 3 ‘A1~C4セルの背景色を設定
    Range(“A1:C4”).Interior.Color = RGB(255, 0, 0) ‘A1~C4セルの背景色を設定

    指定したシートのセルの色を設定する方法

    現在のアクティブシートではなく別のシートのセルの色を設定する、明示的にシートを指定してセルの色を設定する場合はWorksheetsプロパティを使用します。

    Sheet1のセルの色を設定する

    Worksheets(“Sheet1”).Cells(1, 1).Font.Color = RGB(255, 0, 0) ‘Sheet1のA1セルの文字色を設定
    Worksheets(1).Cells(1, 1).Font.Color = RGB(255, 0, 0) ‘Sheet1のA1セルの文字色を設定

    上記のようにワークシート名で指定してもシートのインデックスで指定しても同じ処理となります。

    [Excel VBA]セルの色を取得する方法:文字色と背景色の取得

    続いてセルの色を取得する方法についても見ていきましょう。

    セルの色を取得する基本コード

    セルの色を取得する場合の基本コードは下記のようになっています。

    格納する変数 = Cells(1, 1).Font.Color ‘A1セルの文字色を取得
    格納する変数 = Cells(1, 1).Interior.Color ‘A1セルの背景色を取得

    格納する変数は「Long型」で変数定義をした上で使用しましょう。ColorIndexプロパティを使用して下記のように取得することも可能です。

    格納する変数 = Cells(1, 1).Font.ColorIndex ‘A1セルの文字色を取得
    格納する変数 = Cells(1, 1).Interior.ColorIndex ‘A1セルの背景色を取得

    指定したシートのセルの色を取得する方法

    指定したシートのセルの色を設定する時と同様にセルの色を取得するにはシートを指定した上で取得することができます。

    格納する変数 = Worksheets(“Sheet1”).Cells(1, 1).Font.Color ‘Sheet1のA1セルの文字色を設定
    格納する変数 = Worksheets(1).Cells(1, 1).Font.Color ‘Sheet1のA1セルの文字色を設定
    格納する変数 = Worksheets(“Sheet1”).Cells(1, 1).Interior.Color ‘Sheet1のA1セルの背景色を設定
    格納する変数 = Worksheets(1).Cells(1, 1).Interior.Color ‘Sheet1のA1セルの背景色を設定

    Long型の変数を用意することで上記のようにセルの色を取得することが可能です。

    [Excel VBA]セルの色をクリアする方法

    最後にセルの色をクリアする方法についても見ていきます。セルの色をクリアするのは下記いずれかの方法で用途に応じて使用しましょう。

    1. ClearFormatsで書式を一度にクリアする
    2. 文字色をクリアする
    3. 背景色をクリアする

      それぞれどういう使い方をするかというと下記のようになります。

      ClearFormatsで書式を一度にクリアする

      Cells(1, 1).ClearFormats
      Range(”A1:C4″).ClearFormats

      文字色をクリアする

      Cells(1, 1).Font.Color = RGB(0, 0, 0)
      Cells(1, 1).Font.ColorIndex = 0

      背景色をクリアする

      Cells(1, 1).Interior.Color = RGB(255, 255, 255)
      Cells(1, 1).Interior.ColorIndex = 0

      上記の通り、文字色と背景色をクリアする場合、文字色であれば黒色、背景色であれば白色を設定することによって色をクリアします。

      [Excel VBA]色の見本一覧

      ここまで色の設定方法、取得方法、クリアする方法を見てきましたが、色を設定したり取得する時に色のコードがわからないと困ると思うので、ColorIndexの一覧を紹介しておきます。

      ColorIndexRGB
      塗りつぶしなし0
      1RGB(0,0,0)
      2RGB(255,255,255)
      3RGB(255,0,0)
      4RGB(0,255,0)
      5RGB(0,0,255)
      6RGB(255,255,0)
      7RGB(255,0,255)
      8RGB(0,255,255)
      9RGB(128,0,0)
      10RGB(0,128,0)
      11RGB(0,0,128)
      12RGB(128,128,0)
      13RGB(128,0,128)
      14RGB(0,128,128)
      15RGB(192,192,192)
      16RGB(128,128,128)
      17RGB(153,153,255)
      18RGB(153,51,102)
      19RGB(255,255,204)
      20RGB(204,255,255)
      21RGB(102,0,102)
      22RGB(255,128,128)
      23RGB(0,102,204)
      24RGB(204,204,255)
      25RGB(0,0,128)
      26RGB(255,0,255)
      27RGB(255,255,0)
      28RGB(0,255,255)
      29RGB(128,0,128)
      30RGB(128,0,0)
      31RGB(0,128,128)
      32RGB(0,0,255)
      33RGB(0,204,255)
      34RGB(204,255,255)
      35RGB(204,255,204)
      36RGB(255,255,153)
      37RGB(153,204,255)
      38RGB(255,153,204)
      39RGB(204,153,255)
      40RGB(255,204,153)
      41RGB(51,102,255)
      42RGB(51,204,204)
      43RGB(153,204,0)
      44RGB(255,204,0)
      45RGB(255,153,0)
      46RGB(255,102,0)
      47RGB(102,102,153)
      48RGB(150,150,150)
      49RGB(0,51,102)
      50RGB(51,153,102)
      51RGB(0,51,0)
      52RGB(51,51,0)
      53RGB(153,51,0)
      54RGB(153,51,102)
      55RGB(51,51,153)
      56RGB(51,51,51)

      [Excel VBA]条件に合うセルの色を変えるサンプルコード

      ここまで基本系については紹介してきたので、最後に実際に使用する場面を想定したサンプルコードを紹介します。

      上記画面のように5以上の数字の時に背景色を黄色、文字色を赤色にする場合は下記のようなコードとなります。

      Sub Cell()
      
          Dim x As Integer
          x = 2
          
          Do While Cells(x, 1) <> ""
          
              If Cells(x, 1) >= 5 Then
                  Cells(x, 1).Font.Color = RGB(255, 0, 0)
                  Cells(x, 1).Interior.Color = RGB(255, 255, 0)
              End If
              
              x = x + 1
              
          Loop
      
      End Sub
      

      今回は以上となります。