セルの書式設定「グラデーションの塗りつぶし」を設定する

vbacellspaint_gradteyecatch

エクセルVBA最速理解です。セルの背景色にグラデーション(塗りつぶし効果)を設定します。
線型と四角形型をInterior.Patternプロパティで記述します。

こんにちは じゅんぱ店長 (@junpa33) です。

今回はセルの書式設定の「塗りつぶし」の「グラデーション」をエクセルVBAで記述する方法です。

「塗りつぶしの効果」とは「グラデーション」のことです。

「グラデーション」を設定すると、同時使用で背景色や網掛けを利用することは出来なくなります。

今回はこれをVBAコード化しての利用方法を説明します。

塗りつぶしの効果「グラデーション」設定はこれです

グラデーションのタイプとして、「線形グラデーション」と「方形グラデーション」を設定することが出来ます。

グラデーションの設定は網掛けの場合と同様、「Patternプロパティ」を利用することになります。

グラデーション設定のVBAコード

VBAコードで作成する利点

グラデーションをVBAで作成すると、エクセルシートからの書式設定でグラデーションを作る場合と比べて、

仕上がりに対する柔軟性が全く違います。

線形グラデーションの傾斜角度、方形グラデーションの方形サイズの可変化など、

もっとも違うのが、色の収束ポイントを増やすことが出来る事であったりと、利点しかありません。

(VBAコード作りは面倒ですが・・・)

セルにグラデーションを設定する場合は、Patternプロパティを使用します。

 構文 

Rangeオブジェクト.Interior.Pattern = グラデーションの定数

グラデーション種定数
線形グラデーションxlPatternLinearGradient
方形グラデーションxlPatternRectangularGradient

この構文によるコード記述で、グラデーションのタイプを指定したことになります。

その後に、

Gradientプロパティで取得したGradientオブジェクトに詳細を設定するプロパティを当てていきます。

 構文 

Rangeオブジェクト.Interior.Gradient.関連プロパティ

グラデーション種 関連プロパティ 設定値 説明
線形グラデーション Degree 傾斜角 傾斜角度を指定する
方形グラデーション RectangLeft 0から1 セル内の左の収束ポイントを指定
RectangRigth セル内の右の収束ポイントを指定
RectangTop セル内の上の収束ポイントを指定
RectangBottom セル内の下の収束ポイントを指定
線形・方形グラデーション ColorStops (数値)
または
.Add(位置)
 Clearプロパティで色をクリアー
 ColorStopsで2つの色を表すコレクションが取得できる。
ColorStops(1):始点
ColorStops(2):終点
 セル内での変化位置を指定したい場合は、
.Add(位置)として数値をセット
0:始点、1:終点
0から1の範囲で指定
 Colorプロパティ、ThemeColor プロパティ・TintAndShade プロパティで色を指定

線形グラデーション

「線形グラデーション」には、Patternプロパティの定数「xlPatternLinearGradient」を利用します。

線形グラデーション サンプル1

傾斜角-30°

グラデーションの始点に「白色」と終点に「緑色」を設定

線形グラデーション-30°
Sub グラデーションサンプル1()
    With Range("B3").Interior
        .Pattern = xlPatternLinearGradient
        With .Gradient
            .Degree = -30
            .ColorStops(1).Color = RGB(256, 256, 256)
            .ColorStops(2).Color = RGB(0, 256, 0)
        End With
    End With
End Sub

すこしグラデーションの感じが分かりづらいかもしれません。

傾斜角20 、赤色から白色へのグラデーションをセットします。

線形グラデーション サンプル2

傾斜角度20°、左上角「色色」スタートで右下角「赤色」収束

最初に色設定をリセットしておく。

色設定は始点は白、中間点で中間色、終点で赤 3点を指定

線形グラデーション20°
Sub グラデーションサンプル2()
    With Range("B3").Interior
        .Pattern = xlPatternLinearGradient
        With .Gradient
            .Degree = 20
            .ColorStops.Clear
            .ColorStops.Add(0).Color = RGB(256, 256, 256)
            .ColorStops.Add(0.7).Color = RGB(256, 125, 125)
            .ColorStops.Add(1).Color = RGB(256, 0, 0)
        End With
    End With
End Sub

個人の嗜好ですが、指数関数のグラフ的な色の変化をさせた方がキレイです。

方形グラデーション

方形グラデーションは、Patternプロパティの定数「xlPatternRectangularGradient」を利用します。

方形グラデーション サンプル3

「白」から「青」への方形グラデーションです。

色設定ポイントは始点と終点の2か所になります。

方形グラデーション色ポイント2つ
Sub グラデーションサンプル3()
    With Range("B3").Interior
        .Pattern = xlPatternRectangularGradient
        With .Gradient
            .RectangleLeft = 0.3
            .RectangleRight = 0.7
            .RectangleTop = 0.3
            .RectangleBottom = 0.7
            .ColorStops(1).Color = RGB(256, 256, 256)
            .ColorStops(2).Color = RGB(0, 0, 256)
        End With
    End With
End Sub

色の設定ポイントを少し増やしてみます。

方形グラデーション サンプル4

「白」から「赤」へのグラデーションです。

色の設定ポイントの中間点を3つ増やしました

方形グラデーション色ポイント5つ
Sub グラデーションサンプル4()
    With Range("C4").Interior
        .Pattern = xlPatternRectangularGradient
        With .Gradient
            .RectangleLeft = 0.3
            .RectangleRight = 0.7
            .RectangleTop = 0.3
            .RectangleBottom = 0.7
            .ColorStops.Clear
            .ColorStops.Add(0).Color = RGB(256, 256, 256)
            .ColorStops.Add(0.8).Color = RGB(256, 105, 105)
            .ColorStops.Add(0.9).Color = RGB(256, 85, 85)
            .ColorStops.Add(0.96).Color = RGB(256, 35, 35)
            .ColorStops.Add(1).Color = RGB(256, 0, 0)
        End With
    End With
End Sub

色のポイントを増やせば、当然グラデーションも滑らかにすることだ出来ます。

コード作成においては、仕上がりに対する許容で判断してください。

セルのグラデーションのVBA設定のまとめ

セルの塗りつぶしをグラデーションに設定するためのVBAコードの説明を行ってきました。

一番簡単に済ませるには、「塗りつぶし効果」から「グラデーション」設定窓で操作することですが、操作感の無い硬直したグラデーションになってしまうのは仕方のないことです。

セルにマクロボタンとしてセットする時などには、背景色でやはり ” ボタン風なグラデーション ” 設定したいです。

なれればそうそう難しくないVBAですので、チャレンジしてみてください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です
vbacellsprotecteyecatchセルの書式設定「セルの保護」の設定を最速理解vbacellspaint_gradteyecatchセルの書式設定「グラデーションの塗りつぶし」を設定するcellspaintpatterneyecatchセルの書式設定「塗りつぶしの網掛け」を最速理解vbacellspaintbackeyecatchセルの書式設定「塗りつぶし」背景色をVBAで記述するvbacellsbordereyecatchセルの書式設定「罫線」のVBAを最速理解vbacellsfonteyecatchセルの書式設定「フォント」の操作を最速理解するvbacellsplacementeyecatchセルの書式設定「配置」を最速理解するvbacellssyoshikieyecatchセルの書式設定「表示形式」をVBAコード的に最速理解するVBAcellareaeyecatchセルの範囲選択と設定は14のツールで対応するvbaendpropertyeyecatchセルの範囲選択 Endプロパティで上下左右の最終セルを取得vbaentirecolumneyecatchセルの範囲選択 EntireColumnとColumnの使い方vbaentireroweyecatchセルの範囲選択 EntireRowとRowプロパティの違いvbacolumnseyecatchセルの範囲選択 Columnsプロパティの列指定で参照するvbaunioneyecatchセルの範囲選択 UnionとRangeの一括選択の働きを比較vbaresizeeyecatchセルの範囲選択 Resizeプロパティでセル範囲をサイズ変更vbarangevscellseyecatchセルの範囲選択 Range VS Cells 、VBAで使えるのはどっちvbausedrangeeyecatchセルの範囲選択 UsedRangeプロパティの使い方vbaborder1eyecatchセルの編集 実際に罫線を設定する 位置・線種・太さ・色vbarowseyecatchセルの範囲選択 Rowsプロパティの働きと関連のメソッドvbadeleteeyecatchセルの編集 DeleteとClearの使い分け 削除とクリアの違いvbacurrentregioneyecatchセルの範囲選択 CurrentRegionは連続データをまとめて掴むSpecialCellseyecatchセルの範囲選択 SpecialCellsメソッドはセル検索し選択するvbacharactereyecatchaセルの編集 Charactersで文字列中の一部の文字を加工するvbafontsyseyecatchaセルの編集 Fontプロパティで文字装飾操作をするvbalastcelleyecatchセルの範囲選択 データ入力済セルの最終行番号を取得するvbaoffseteyecatchセルの範囲選択 Offsetプロパティは指定範囲を移動させる
<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。