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

はじめに

今回は、セルの文字色を取得・設定する方法について解説します。
主要な色の種類から、RGB形式・定数での指定方法、一部文字列だけ色を設定する方法など、さまざまな設定方法を詳しく解説していますので、是非最後までお付き合いください!

この記事を読むメリット
  • セルの文字列を取得・設定する方法が分かります。
  • RGB形式や定数での指定方法など、複数パターンの色の設定が分かります。
  • コピペで使える実践的なサンプルコードを掲載しています。

前提

関連プロパティ

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

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

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

代表的な色のRGBと、インデックス番号を掲載します。
ここでは、注目してほしい点を目立たせる「赤と青」、スタンダードな「黒と白」をご紹介します。

#RGBColorIndex
1RGB(255, 0, 0)1
2RGB(255, 255, 255)2
3RGB(255, 0, 0)3
4RGB(0, 0, 255)5
代表的な色

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

基本情報

Colorプロパティ

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

構文

構文

RangeObject.FontObject.Color = 設定値

設定値

RGB値 及び 「XlRgbColor」定数を指定します。
「XlRgbColor」定数について以下をご参照ください。
(参考:色の一覧表 – XlRgbColor

ColorIndexプロパティ

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

構文

構文

RangeObject.FontObject.ColorIndex = 設定値

設定値

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

定数

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

#定数説明
1xlColorIndexAutomatic色を自動的に設定
2xlColorIndexNone色なし
※文字色は色なしには設定できないため、無効となります。
XlColorIndex列挙型 – 定数

サンプルコード

セルの文字色を設定する

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

    ' A1セルの文字色を 赤字 にする
    Range("A1").Font.Color = RGB(255, 0, 0)

    ' A2セルの文字色を 青字 にする
    Range("A2").Font.Color = rgbBlue

    ' A3セルの文字色を 白 にする
    Range("A3").Font.ColorIndex = 2
End Sub

セルの一部文字色を設定する

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

    ' A1セルの 2文字目を起点にした 3文字を 赤字 にする
    Range("A1").Characters(2, 3).Font.Color = rgbRed
End Sub

セルの文字色を取得する

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

    ' A1セルの文字色を取得
    colorVal = Range("A1").Font.Color

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

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

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

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

セルの文字色を自動(初期値)に戻す

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

    ' A1セルの文字色を自動(初期値)にする
    Range("A1").Font.ColorIndex = xlColorIndexAutomatic
End Sub

シートすべてのセルの文字色を自動(初期値)に戻す

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

    ' 1番目のシートのセルの文字色をすべて自動(初期値)にする
    Worksheets(1).Cells.Font.ColorIndex = xlColorIndexAutomatic
End Sub

最後に

今回は、セルの文字色を取得・設定する方法について解説しました。

本記事が、皆さんのお力になれば幸いです!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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

コメント

コメントする

CAPTCHA