2013年2月26日(火) » Excel VBA Tips, セル関連

文字色の色番号を取得する関数

ひとつ星

 あるセルに設定されている文字色(フォントカラー)のカラーインデックス番号を知りたい場合があります。利便性を考慮して、ここでは文字色の色番号を取得するユーザー定義関数を紹介します。

文字色のカラーインデックス番号を取得する

 セルに設定されている文字色の番号を取得する標準の関数は、残念ながらありません。このためExcel VBAを使う必要があります。Excel VBAでは、次のようにしてセルの文字色の番号を取得することができます。

ソースコード: 文字色を取得

MsgBox Range("A1").Font.ColorIndex

 これを実行すると、セル[A1]に設定されている文字色のカラーインデックス番号がメッセージボックスに表示されます。

 Rangeオブジェクトの「Fontプロパティ」更に「ColorIndexプロパティ」を見ることで、文字の色番号がわかるということです。

文字色を取得するユーザー定義関数

 それでは本題のユーザー定義関数です。次のソースコードは引数として指定されたセルに設定されている文字色の番号を返却するFunctionプロシージャ(ユーザー定義関数)です。

ソースコード:

Function GetFontColorIndex(ByRef argCell As Range) As Integer
    Application.Volatile
    GetFontColorIndex = argCell.Item(1).Font.ColorIndex
End Function

NOTE: Application.Volatileを記述することで自動再計算を有効にできます。ただし、今回の場合色情報であるため、色の変化と同時に再計算は行われません。必要に応じて手動で再計算を行うか、適当なセルの値を書き換えて再計算を誘発して下さい。

NOTE: 引数として渡されたセル範囲に複数の文字色が存在するとColorIndexプロパティはNullを返却してしまうため、セル範囲の代表として「Item(1)」(一つ目のセル)の文字色を取得するようになっています。

 次の図のようにしてワークシート関数と同様に使用することができます。

タグ: , ,

コメントを残す