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

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(255, 255, 255)
            .ColorStops(2).Color = RGB(0, 255, 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(255, 255, 255)
            .ColorStops.Add(0.7).Color = RGB(255, 125, 125)
            .ColorStops.Add(1).Color = RGB(255, 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(255, 255, 255)
            .ColorStops(2).Color = RGB(0, 0, 255)
        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(255, 255, 255)
            .ColorStops.Add(0.8).Color = RGB(255, 105, 105)
            .ColorStops.Add(0.9).Color = RGB(255, 85, 85)
            .ColorStops.Add(0.96).Color = RGB(255, 35, 35)
            .ColorStops.Add(1).Color = RGB(255, 0, 0)
        End With
    End With
End Sub

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

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

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

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

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

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

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

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

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

vbabgcoloreyecatch セルの背景色を2クリックで他範囲にも展開できるマクロ vbasorteyecatch データの並び替え VBA新旧のSortを実データで実証 vbacellsprotecteyecatch 「セルの保護」の設定VBAを最速理解 vbacellspaint_gradteyecatch 「グラデーションの塗りつぶし」のセルを設定する cellspaintpatterneyecatch 「塗りつぶしの網掛け」VBAを最速理解 vbacellspaintbackeyecatch 「塗りつぶし」背景色をVBAで記述する vbacellsbordereyecatch 「罫線」のVBAを最速理解 vbacellsfonteyecatch 「フォント」の操作を最速理解する エクセルVBA vbacellsplacementeyecatch 「配置」を最速理解する エクセルVBA 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 Bordersの/位置/線種/太さ/色/と<外枠だけの罫線>の設置 vbarowseyecatch Rowsプロパティの働きと関連のメソッド vbadeleteeyecatch セルの編集 DeleteとClearの使い分け 削除とクリアの違い vbacurrentregioneyecatch CurrentRegionは連続データをまとめて掴む SpecialCellseyecatch SpecialCellsメソッドはセル検索し選択する vbacharactereyecatcha Charactersで文字列中の一部の文字を加工する vbafontsyseyecatcha Fontプロパティで文字装飾操作をする vbajyufukueyecatch エクセルVBA 同じ項目をまとめる(重複データの整理)コード作成 vbafindeyecatch001 Findメソッドでの検索の方法とコード組み立てのコツ vbalastcelleyecatch データ入力済セルの最終行番号を取得する vbaoffseteyecatch Offsetプロパティは指定範囲を移動させる

エクセルVBA最速理解で必要な知識を集めよう!

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。