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

cellspaintpatterneyecatch

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

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

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

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

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

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

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

vbacellspaint_ami024

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

vbacellspaint_ami001

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

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

という順になります。

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

ここで注意することは、

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

ということです。

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

vbacellspaint_ami025

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

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

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

前回記事

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

で確認してください。

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

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

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

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

Patternプロパティ

構文

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

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

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

 網掛け解除時の注意 

  • 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
vbacellspaint_ami020
拡大率100%
vbacellspaint_ami021
拡大率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
vbacellspaint_ami022
拡大率100%
vbacellspaint_ami023
拡大率120%

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

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

「塗りつぶし」の網掛け設定のVBAコードのまとめ

セルの書式設定の「塗りつぶしのパターン」つまり「網掛け」について説明してきました。

たくさんの種類があって使いたくはなりますが、実際使ってみるとイマイチ良くありません。

「網掛けが濃い色過ぎて入力文字が見えない!」という問題です。

ここで「色濃度変更プロパティを知っているか、いないか、どっち?!」で、

運命の分かれ目、的に使うか使わないかが分かれそうです。

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

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

今回の記事はここまでです。   最後までご覧いただき有難うございました。

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

エクセルVBA業務ツールで日常の業務改善を行いましょう。

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