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

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「フォント」の操作を最速理解する エクセルVBAvbacellsplacementeyecatch「配置」を最速理解する エクセルVBAvbacellssyoshikieyecatch「表示形式」をVBAコード的に最速理解するVBAcellareaeyecatchセルの範囲選択と設定は14のツールで対応するvbaendpropertyeyecatchEndプロパティで上下左右の最終セルを取得vbaentirecolumneyecatchEntireColumnとColumnの使い方vbaentireroweyecatchEntireRowとRowプロパティの違いvbacolumnseyecatchColumnsプロパティの列指定で参照するvbaunioneyecatchUnionとRangeの一括選択の働きを比較vbaresizeeyecatchResizeプロパティでセル範囲をサイズ変更vbarangevscellseyecatchRange VS Cells !VBAで使えるのはどっちvbausedrangeeyecatchUsedRangeプロパティの使い方のコツvbaborder1eyecatchBordersの/位置/線種/太さ/色/と<外枠だけの罫線>の設置vbarowseyecatchRowsプロパティの働きと関連のメソッドvbadeleteeyecatchセルの編集 DeleteとClearの使い分け 削除とクリアの違いvbacurrentregioneyecatchCurrentRegionは連続データをまとめて掴むSpecialCellseyecatchSpecialCellsメソッドはセル検索し選択するvbacharactereyecatchaCharactersで文字列中の一部の文字を加工するvbafontsyseyecatchaFontプロパティで文字装飾操作をするvbajyufukueyecatchエクセルVBA 同じ項目をまとめる(重複データの整理)コード作成vbafindeyecatch001Findメソッドでの検索の方法とコード組み立てのコツvbalastcelleyecatchデータ入力済セルの最終行番号を取得するvbaoffseteyecatchOffsetプロパティは指定範囲を移動させる

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