Range.FormatConditions.AddColorScaleメソッド
指定セル範囲の値の大きさによって2色または3色で表現するグラデーションで表示する条件付き書式を設定する場合に、Range.FormatConditions.AddColorScaleメソッドを利用します。
AddColorScaleメソッドを実行すると戻り値としてColorScaleオブジェクトが返されます。
ColorScaleオブジェクトの各プロパティを設定することで条件に一致した場合にセルに装飾する設定を行います。
なお、AddColorScaleメソッドの代わりにRange.FormatConditions.Addメソッドの引数TypeでxlColorScaleを指定した場合でも同じようにカラースケール表示のルールの設定を行うことが可能です。
構文
1 |
Function Range.FormatConditions.AddColorScale(ColorScaleType As Long) As ColorScale |
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オブジェクトの各プロパティは以下になります。
|
||||||||||||||||||||||||||||||||||||||||||||
Creator | ColorScaleオブジェクトを作成したアプリケーションを 32 ビットの整数値で返します。値の取得のみ可能です。長整数型 (Long) の値を使用します。 | ||||||||||||||||||||||||||||||||||||||||||||
Formula | カラースケールが適用される値を決定する数式を表す文字列型 (String) の値を設定します。 | ||||||||||||||||||||||||||||||||||||||||||||
Parent | ColorScaleオブジェクトの親オブジェクトを返します。値の取得のみ可能です。 | ||||||||||||||||||||||||||||||||||||||||||||
Priority | 条件付き書式ルールの優先度の値を取得、または設定します。優先度は、ワークシート内に複数の条件付き書式ルールが存在する場合、その評価の順序を決定します。 | ||||||||||||||||||||||||||||||||||||||||||||
PTCondition | 条件付き書式がピボットテーブルに適用されるかどうかを表すブール型 (Boolean) の値を返します。値の取得のみ可能です。Trueが適用され、Falseまたは省略時は適用されません。 | ||||||||||||||||||||||||||||||||||||||||||||
ScopeType | 条件付き書式がピボットテーブルに適用される場合、その適用範囲を表す XlPivotConditionScope 列挙型の定数を取得または設定します。
|
||||||||||||||||||||||||||||||||||||||||||||
StopIfTrue | 現在のルールが True に評価された場合、そのルール以降より下位優先度のルールを設定するかどうかをBoolean型で指定します。Trueの場合は下位優先度のルールは設定されません。 | ||||||||||||||||||||||||||||||||||||||||||||
Type | 条件付き書式の種類を表すXlFormatConditionType列挙型の定数xlColorScale(カラースケール。値=3)を返します。値の取得のみ可能です。 |
サンプルコード
A列で値を設定した場合にカラースケールを表示するサンプルコードです。分かりやすいように派手目の色にしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
Sub AddColorScaleTest() Dim r As Range Dim c As ColorScale Dim csa As ColorScaleCriteria Dim csn As ColorScaleCriterion '// A列を指定 Set r = Range("A:A") '// 3色設定 Set c = r.FormatConditions.AddColorScale(3) '// 色を設定するためにColorScaleCriteriaコレクションを取得 Set csa = c.ColorScaleCriteria '// 最小値 Set csn = csa(1) csn.Type = xlConditionValueLowestValue csn.FormatColor.Color = RGB(0, 255, 255) '// 水色 '// 中間値 Set csn = csa(2) csn.Type = xlConditionValuePercent '// パーセンテージ csn.Value = 50 csn.FormatColor.Color = RGB(255, 0, 255) '// ピンク '// 最大値 Set csn = csa(3) csn.Type = xlConditionValueHighestValue csn.FormatColor.Color = RGB(255, 255, 0) '// 黄色 End Sub |
コード説明
処理自体はコードのコメントの通りなのですが、注意点として書式の設定はColorScaleオブジェクトに対して行う必要があるため、ColorScaleオブジェクトを返すAddColorScaleメソッドが終わったあとにしなければなりません。
また、2色または3色の各色の書式の設定をColorScaleCriterionオブジェクトに対して設定しますが、ColorScaleCriterionオブジェクトが格納されているColorScaleCriteriaコレクションからColorScaleCriterionオブジェクトを指定するには2色の場合はColorScaleCriteriaオブジェクトの(1)と(2)、3色の場合は(1)と(2)と(3)の各インデックスでColorScaleCriterionオブジェクトを指定しなければなりません。
実行結果
上のコードを実行すると以下のようになります。例としてA列に1から順に入力しています。
条件付き書式は以下のようになります。