VBAで条件付き書式のカラースケールを設定する

Range.FormatConditions.AddColorScaleメソッド

指定セル範囲の値の大きさによって2色または3色で表現するグラデーションで表示する条件付き書式を設定する場合に、Range.FormatConditions.AddColorScaleメソッドを利用します。

AddColorScaleメソッドを実行すると戻り値としてColorScaleオブジェクトが返されます。

ColorScaleオブジェクトの各プロパティを設定することで条件に一致した場合にセルに装飾する設定を行います。

なお、AddColorScaleメソッドの代わりにRange.FormatConditions.Addメソッドの引数TypeでxlColorScaleを指定した場合でも同じようにカラースケール表示のルールの設定を行うことが可能です。

構文

Range.FormatConditions 親オブジェクトとして指定します。
ColorScaleType カラースケールの色を指定します。2色の場合は「2」、3色の場合は「3」を指定します。2色の場合は最小値と最大値を指し、3色の場合は最小値と中間値と最大値を指します。それ以外の値を指定した場合は実行時エラー9のインデックス範囲外のエラーになります。
ColorScale 戻り値としてColorScaleオブジェクトを返します。

ColorScaleオブジェクトのプロパティ

AddColorScaleメソッドで返されるColorScaleオブジェクトの各種プロパティを利用して書式を設定します。

Application ColorScaleオブジェクトを作成したApplicationオブジェクトを取得します。値の取得のみ可能です。
AppliesTo 書式ルールが適用されているセル範囲を表す Range オブジェクトを返します。
ColorScaleCriteria カラースケールの条件付き書式のルールを保持するColorScaleCriterionオブジェクトのコレクションであるColorScaleCriteriaコレクションを返します。名前が似ていますが末尾が「on」と「a」で異なります。

色の設定はColorScaleCriteriaコレクションの各ColorScaleCriterionオブジェクトのFormatColor.Colorプロパティ等に対して行います。

ColorScaleCriterionオブジェクトの各プロパティは以下になります。

FormatColor.Color RGB関数での背景色を設定します。
FormatColor.ColorIndex インデックス値での背景色を設定します。
FomratColor.ThemeColor テーマカラー値での背景色を設定します。
FormatColor.TintAndShade セルの背景色の明るさ(濃淡)を設定します。
Index 2色の場合は1と2、3色の場合は1と2と3のいずれかになります。最小値が1、中間値が2、最大値が2(2色の場合)または3(3色の場合)になります。
Type しきい値を設定する場合にXlConditionValueType列挙型を指定します。最小値や最大値などを示していることをここで設定します。

定数 内容
xlConditionValueAutomaticMax 7 カラースケールでは未使用です。エラーになります。
xlConditionValueAutomaticMin 6 カラースケールでは未使用です。エラーになります。
xlConditionValueFormula 4 数式
xlConditionValueHighestValue 2 最大値
xlConditionValueLowestValue 1 最小値
xlConditionValueNone -1 値なし。エラーになります。
xlConditionValueNumber 0 数字
xlConditionValuePercent 3 パーセンテージ
xlConditionValuePercentile 5 百分式
Value Typeプロパティで数字、パーセンテージ、百分式、数式のいずれかを指定した場合に必要な値を設定します。Typeプロパティが最小値、最大値の場合は0固定です。
Creator ColorScaleオブジェクトを作成したアプリケーションを 32 ビットの整数値で返します。値の取得のみ可能です。長整数型 (Long) の値を使用します。
Formula カラースケールが適用される値を決定する数式を表す文字列型 (String) の値を設定します。
Parent ColorScaleオブジェクトの親オブジェクトを返します。値の取得のみ可能です。
Priority 条件付き書式ルールの優先度の値を取得、または設定します。優先度は、ワークシート内に複数の条件付き書式ルールが存在する場合、その評価の順序を決定します。
PTCondition 条件付き書式がピボットテーブルに適用されるかどうかを表すブール型 (Boolean) の値を返します。値の取得のみ可能です。Trueが適用され、Falseまたは省略時は適用されません。
ScopeType 条件付き書式がピボットテーブルに適用される場合、その適用範囲を表す XlPivotConditionScope 列挙型の定数を取得または設定します。

定数 内容
xlDataFieldScope 2 指定されたフィールドのデータに基づく
xlFieldsScope 1 指定されたフィールドに基づく
xlSelectionScope 0 指定された選択基準に基づく
StopIfTrue 現在のルールが True に評価された場合、そのルール以降より下位優先度のルールを設定するかどうかをBoolean型で指定します。Trueの場合は下位優先度のルールは設定されません。
Type 条件付き書式の種類を表すXlFormatConditionType列挙型の定数xlColorScale(カラースケール。値=3)を返します。値の取得のみ可能です。



サンプルコード

A列で値を設定した場合にカラースケールを表示するサンプルコードです。分かりやすいように派手目の色にしています。

コード説明

処理自体はコードのコメントの通りなのですが、注意点として書式の設定はColorScaleオブジェクトに対して行う必要があるため、ColorScaleオブジェクトを返すAddColorScaleメソッドが終わったあとにしなければなりません。

また、2色または3色の各色の書式の設定をColorScaleCriterionオブジェクトに対して設定しますが、ColorScaleCriterionオブジェクトが格納されているColorScaleCriteriaコレクションからColorScaleCriterionオブジェクトを指定するには2色の場合はColorScaleCriteriaオブジェクトの(1)と(2)、3色の場合は(1)と(2)と(3)の各インデックスでColorScaleCriterionオブジェクトを指定しなければなりません。

実行結果

上のコードを実行すると以下のようになります。例としてA列に1から順に入力しています。

条件付き書式は以下のようになります。

関連記事

サブコンテンツ

このページの先頭へ