「塗りつぶしの網掛け」VBAを最速理解

cellspaintpatterneyecatch

エクセルVBA セルの書式設定「塗りつぶし」の中のパターン、つまり「網掛け」を設定するVBAコードです。
実用するには、多少の追加のコードが必要になります。

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

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

パターンとは「網掛け」のことです。

背景色だけでなく違った形での ” 目立たせ ” ツールとして準備されています。

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

「塗りつぶし」の網掛け(パターン)設定はこれです

パターン設定つまり網掛け設定は、「パターンの色」と「パターンの種類」からなります。

「パターン(網掛け)」が表示されるレイヤー位置は、つまりセルの表示のどの層かは、

最下層が「背景色」→中間層に「網掛け」→最上部に「入力文字」

という順になります。

つまり、最上位が「入力文字」であるので、どんな「パターン(網掛け)」であっても文字が消えることは無いということです。

ここで注意することは、

網掛けによって、文字が全く見えなくなることは避けなければいけない。

ということです。

パターン設定のVBAコードと入力文字「見える化」の対策

パターン(網掛け)を設定するのに利用するプロパティは、

背景色と同じ「Interiorプロパティ」を利用します。

Interiorプロパティの記述の構文は、

前回記事

vbacellspaintbackeyecatch 「塗りつぶし」背景色をVBAで記述する

で確認してください。

パターンの種類を設定するVBAコード

パターン(網掛け)の種類は「なし」を含めて全部で18種類準備されています。

それぞれの網掛けの種類を指定する方法は、Interiorオブジェクトに対して、

「Patternプロパティ」を当てることでその属する定数を指定することが出来ます。

Patternプロパティ

 構文 

Rangeオブジェクト.Interior.Pattern = 定数

(番号は説明のため付けています)

番号 Patternの定数 説明 網掛け表示
1 xlPatternSolid 塗りつぶし(パターンなし) vbacellspaint_ami002
2 xlPatternGray75 75%灰色 vbacellspaint_ami003
3 xlPatternGray50 50%灰色 vbacellspaint_ami004
4 xlPatternGray25 25%灰色 vbacellspaint_ami005
5 xlPatternGray16 12.5%灰色 vbacellspaint_ami006
6 xlPatternGray8 6.25%灰色 vbacellspaint_ami007
7 xlPatternHorizontal 横縞模様 vbacellspaint_ami008
8 xlPatternVertical 縦縞模様 vbacellspaint_ami009
9 xlPatternDown 右下がり斜線縞模様 vbacellspaint_ami010
10 xlPatternUp 左下がり斜線縞模様 vbacellspaint_ami011
11 xlPatternChecker 左下がり斜線格子 vbacellspaint_ami012
12 xlPatternSemiGray75 極太線左下がり斜線格子 vbacellspaint_ami013
13 xlPatternLightHorizontal 実線横縞模様 vbacellspaint_ami014
14 xlPatternLightVertical 実線縦縞模様 vbacellspaint_ami015
15 xlPatternLightDown 実線右下がり斜線縞模様 vbacellspaint_ami016
16 xlPatternLightUp 実線左下がり斜線縞模様 vbacellspaint_ami017
17 xlPatternGrid 実線横格子 vbacellspaint_ami018
18 xlPatternCrissCross 実線左下がり斜線格子 vbacellspaint_ami019
19 xlPatternNone 塗りつぶしなし

 網掛け解除時の注意 

  •  10番目の定数「xlPatternNone」を使えばパターン(網掛け)を解除することが出来ます。と同時に、背景色を設定していた場合は背景色も解除されることになります。
  •  パターン(網掛け)だけを解除するときは、1番目の定数「xlPatternSolid」を使わないといけません。

網掛けのサンプルコード

5番と8番と15番と17番
HTML
Sub パターンサンプル1()
    Range("B3:B9").Value = "あいうえお" & 12345
'5番
    Range("B3").Interior.Pattern = xlPatternGray16
'8番
    Range("B5").Interior.Pattern = xlPatternVertical
'15番
    Range("B7").Interior.Pattern = xlPatternLightDown
'17番
    Range("B9").Interior.Pattern = xlPatternGrid
    Columns(2).AutoFit
End Sub
拡大率100%
拡大率200%

実使用で、視認性に耐えるのは、この中では ” 5番 ” の「12.5%灰色」だけのようです。

エクセル表示を200%まで拡大して ” 15番 ” の「実線右下がり斜線縞模様」まで見えるようになりました。

残りのパターンはまるで文字をモザイク処理しているようです。

パターンの色を設定するVBAコード

色についてはColorプロパティの関係ですが、

パターン(網掛け)については、「PatternColorプロパティ」「PatternColorIndexプロパティ」になります。

それぞれの網掛けの色を指定する方法は、Interiorオブジェクトに対して、

「PatternColorプロパティ」「PatternColorIndexプロパティ」を当てることで網掛けに色を指定することが出来ます。

PatternColorプロパティ

 構文 

Rangeオブジェクト.Interior.PatternColor = カラー定数 または RGB指定

Rangeオブジェクト.Interior.PatternColorIndex = インデックス番号

カラー定数、RGB指定やインデックス番号については、「背景色」の記事を参考にしてください。

vbacellspaintbackeyecatch 「塗りつぶし」背景色をVBAで記述する

入力文字の「見える化」対策のVBAコード

折角、楽しそうなバリエーションのある「網掛け」なのに、使わない手はありません。

ただ問題は先の説明でしたように、網掛けによっては(ほとんどのパターンで)入力文字が見えなくなってしまいます。

網掛けに色付けをしても「見える化」にはそれほど有効ではありません。ではどうするか?

パターン(網掛け)の表示される色の濃度を薄くすることで、

網掛け特有の強調表示を残しながら文字の「見える化」をすることが出来ます。

パターンの色濃度を変化させるプロパティは、「PatternTintAndShadeプロパティ」です。

PatternTintAndShadeプロパティ

 構文 

Rangeオブジェクト.Interior.PatternTintAndShade = 設定値

設定値は「-1から+1 センター値は0」になります。

パターン(網掛け)の濃度変更テスト

8番の「縦縞模様」の色濃度変更テスト

「縦縞模様」はそのままでは、文字の視認が難しいパターンです。縞模様と文字が重なりにじんで見えません。

色濃度を0%から100%の間に6段階に分けてテストをします。パターンで使用する色は赤RGB(255,0,0)です。

入力文字は視認性を補助するため太字にしています。

「縦縞模様」の色濃度変更
Sub パターンサンプル2()
    Dim i As Long
        With Range("B2:B10")
            .Value = "あいうえお" & 12345
            .Font.Bold = True
        End With
    '8番
        With Range("B3").Interior
            .Pattern = xlPatternVertical
            .PatternColor = RGB(255, 0, 0)
        End With
        For i = 1 To 6
            With Range("B3").Offset(i)
                .Interior.Pattern = xlPatternVertical
                .Interior.PatternColor = RGB(255, 0, 0)
                .Interior.PatternTintAndShade = 0.1 * i * 1.5
                .Offset(, 1).Value = "濃度 " & _
       WorksheetFunction.Round((100 - (0.1 * i * 1.5) * 100), 0) & "%"
            End With
        Next i
        Columns(2).AutoFit
End Sub
拡大率100%
拡大率120%

この条件下の場合ですと、濃度25%であれば文字とパターン(網掛け)がしっかり分離されて視認することが出来ます。

パターン全部をテストすることはしていませんが、” 濃い系の網掛け ” であれば、色濃度10%から20%程度であれば、視認性も十分改善されると思われます。

「塗りつぶし」の網掛け設定の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コードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。