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

条件付き書式のカラースケールを設定します。自分で設定する場合は、範囲を選んで条件付き書式を選択し、カラースケールを選択します。

【サンプルプログラム】

Sub SampleProgram()
    ' C1の列にカラースケールを設定
    AddFormatColorScale ActiveSheet, "C1"
End Sub

【関数化】

' ------------------------------------------------------------
' 説明:指定した列(列番号名)にカラースケール(3色)を設定
' 引数:1:処理対象のワークシート
'       2:基準となる Range(文字列) を指定
'       3:相対値の高いセルの色 省略時は 7039480 RGB(248,105,107)
'       4:中程度の値のセルの色 省略時は 8711167 RGB(255,235,132)
'       5:値の低いセルの色 省略時は 8109667     RGB(99,190,123)
' 補足:color3 を-1にすると2色表示
' ------------------------------------------------------------
Sub AddFormatColorScale(ws As Worksheet, column As String, _
                        Optional color1 As Long = 7039480, _
                        Optional color2 As Long = 8711167, _
                        Optional color3 As Long = 8109667)
    Dim rng As Range
    Dim idx As Long
    
    ' 指定した列(列番号名)の最終行(下から)までのRangeを取得
    Set rng = GetLastRowRange(ws, column)
   
    With rng
        ' 色の種類(2色 or 3色)
        If color3 = -1 Then
            ' 2色を指定
            .FormatConditions.AddColorScale ColorScaleType:=2
        Else
            ' 3色を指定
            .FormatConditions.AddColorScale ColorScaleType:=3
        End If
        
        ' 複数の条件付き書式を設定する場合があるので、カラースケール(Type=3)を探す
        For idx = 1 To .FormatConditions.Count
            With .FormatConditions(idx)
                If .Type = 3 Then
                    ' 色を設定
                    .ColorScaleCriteria(1).FormatColor.Color = color1
                    .ColorScaleCriteria(2).FormatColor.Color = color2
                    If color3 <> -1 Then
                        .ColorScaleCriteria(3).FormatColor.Color = color3
                    End If
                    Exit For
                End If
            End With
        Next idx
    End With
End Sub

【条件付き書式をクリアするサンプルプログラム】

Sub SampleProgram_clear()
    Dim rng As Range
    
    Set rng = GetLastRowRange(ActiveSheet, "C1")
    rng.FormatConditions.Delete
End Sub

【色サンプル】
左上から、順に色のサンプルを作成しました。
二段目の左2つと、三段目は2色となっていました。

AddFormatColorScale ActiveSheet, "C1", RGB(248,105,107), RGB(255,235,132), RGB(99,190,123)
AddFormatColorScale ActiveSheet, "C1", RGB(99,190,123), RGB(255,235,132), RGB(248,105,107)
AddFormatColorScale ActiveSheet, "C1", RGB(248,105,107), RGB(252,252,255), RGB(99,190,123)
AddFormatColorScale ActiveSheet, "C1", RGB(99,190,123), RGB(252,252,255), RGB(248,105,107)
AddFormatColorScale ActiveSheet, "C1", RGB(248,105,107), RGB(252,252,255), RGB(90,138,198)
AddFormatColorScale ActiveSheet, "C1", RGB(90,138,198), RGB(252,252,255), RGB(248,105,107)
AddFormatColorScale ActiveSheet, "C1", RGB(248,105,107), RGB(252,252,255),-1
AddFormatColorScale ActiveSheet, "C1", RGB(252,252,255), RGB(248,105,107),-1
AddFormatColorScale ActiveSheet, "C1", RGB(252,252,255), RGB(99,190,123),-1
AddFormatColorScale ActiveSheet, "C1", RGB(99,190,123), RGB(252,252,255),-1
AddFormatColorScale ActiveSheet, "C1", RGB(255,239,156), RGB(99,190,123),-1
AddFormatColorScale ActiveSheet, "C1", RGB(99,190,123), RGB(255,239,156),-1

【補足】

以下の関数を使用していますので、リンクから関数をコピーします。
指定位置から列の下までのRangeを取得 – GetLastRowRange

コメント