エクセルVBA セルの書式設定「塗りつぶし」の中のパターン、つまり「網掛け」を設定するVBAコードです。
実用するには、多少の追加のコードが必要になります。
こんにちは じゅんぱ店長 (@junpa33) です。
今回はセルの書式設定の「塗りつぶし」の「パターン」をエクセルVBAで記述する方法です。
パターンとは「網掛け」のことです。
背景色だけでなく違った形での ” 目立たせ ” ツールとして準備されています。
今回はこれをVBAコード化しての利用方法を説明します。
コンテンツ
「塗りつぶし」の網掛け(パターン)設定はこれです
パターン設定つまり網掛け設定は、「パターンの色」と「パターンの種類」からなります。
「パターン(網掛け)」が表示されるレイヤー位置は、つまりセルの表示のどの層かは、
最下層が「背景色」→中間層に「網掛け」→最上部に「入力文字」
という順になります。
つまり、最上位が「入力文字」であるので、どんな「パターン(網掛け)」であっても文字が消えることは無いということです。
ここで注意することは、
網掛けによって、文字が全く見えなくなることは避けなければいけない。
ということです。
パターン設定のVBAコードと入力文字「見える化」の対策
パターン(網掛け)を設定するのに利用するプロパティは、
背景色と同じ「Interiorプロパティ」を利用します。
Interiorプロパティの記述の構文は、
前回記事
「塗りつぶし」背景色をVBAで記述するで確認してください。
パターンの種類を設定するVBAコード
パターン(網掛け)の種類は「なし」を含めて全部で18種類準備されています。
それぞれの網掛けの種類を指定する方法は、Interiorオブジェクトに対して、
「Patternプロパティ」を当てることでその属する定数を指定することが出来ます。
Rangeオブジェクト.Interior.Pattern = 定数
(番号は説明のため付けています)
番号 | Patternの定数 | 説明 | 網掛け表示 |
---|---|---|---|
1 | xlPatternSolid | 塗りつぶし(パターンなし) | |
2 | xlPatternGray75 | 75%灰色 | |
3 | xlPatternGray50 | 50%灰色 | |
4 | xlPatternGray25 | 25%灰色 | |
5 | xlPatternGray16 | 12.5%灰色 | |
6 | xlPatternGray8 | 6.25%灰色 | |
7 | xlPatternHorizontal | 横縞模様 | |
8 | xlPatternVertical | 縦縞模様 | |
9 | xlPatternDown | 右下がり斜線縞模様 | |
10 | xlPatternUp | 左下がり斜線縞模様 | |
11 | xlPatternChecker | 左下がり斜線格子 | |
12 | xlPatternSemiGray75 | 極太線左下がり斜線格子 | |
13 | xlPatternLightHorizontal | 実線横縞模様 | |
14 | xlPatternLightVertical | 実線縦縞模様 | |
15 | xlPatternLightDown | 実線右下がり斜線縞模様 | |
16 | xlPatternLightUp | 実線左下がり斜線縞模様 | |
17 | xlPatternGrid | 実線横格子 | |
18 | xlPatternCrissCross | 実線左下がり斜線格子 | |
19 | xlPatternNone | 塗りつぶしなし | - |
網掛け解除時の注意
- 10番目の定数「xlPatternNone」を使えばパターン(網掛け)を解除することが出来ます。と同時に、背景色を設定していた場合は背景色も解除されることになります。
- パターン(網掛け)だけを解除するときは、1番目の定数「xlPatternSolid」を使わないといけません。
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
実使用で、視認性に耐えるのは、この中では ” 5番 ” の「12.5%灰色」だけのようです。
エクセル表示を200%まで拡大して ” 15番 ” の「実線右下がり斜線縞模様」まで見えるようになりました。
残りのパターンはまるで文字をモザイク処理しているようです。
パターンの色を設定するVBAコード
色についてはColorプロパティの関係ですが、
パターン(網掛け)については、「PatternColorプロパティ」「PatternColorIndexプロパティ」になります。
それぞれの網掛けの色を指定する方法は、Interiorオブジェクトに対して、
「PatternColorプロパティ」「PatternColorIndexプロパティ」を当てることで網掛けに色を指定することが出来ます。
Rangeオブジェクト.Interior.PatternColor = カラー定数 または RGB指定
Rangeオブジェクト.Interior.PatternColorIndex = インデックス番号
カラー定数、RGB指定やインデックス番号については、「背景色」の記事を参考にしてください。
「塗りつぶし」背景色をVBAで記述する入力文字の「見える化」対策のVBAコード
折角、楽しそうなバリエーションのある「網掛け」なのに、使わない手はありません。
ただ問題は先の説明でしたように、網掛けによっては(ほとんどのパターンで)入力文字が見えなくなってしまいます。
網掛けに色付けをしても「見える化」にはそれほど有効ではありません。ではどうするか?
パターン(網掛け)の表示される色の濃度を薄くすることで、
網掛け特有の強調表示を残しながら文字の「見える化」をすることが出来ます。
パターンの色濃度を変化させるプロパティは、「PatternTintAndShadeプロパティ」です。
Rangeオブジェクト.Interior.PatternTintAndShade = 設定値
設定値は「-1から+1 センター値は0」になります。
「縦縞模様」はそのままでは、文字の視認が難しいパターンです。縞模様と文字が重なりにじんで見えません。
色濃度を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
この条件下の場合ですと、濃度25%であれば文字とパターン(網掛け)がしっかり分離されて視認することが出来ます。
パターン全部をテストすることはしていませんが、” 濃い系の網掛け ” であれば、色濃度10%から20%程度であれば、視認性も十分改善されると思われます。
「塗りつぶし」の網掛け設定のVBAコードのまとめ
セルの書式設定の「塗りつぶしのパターン」つまり「網掛け」について説明してきました。
たくさんの種類があって使いたくはなりますが、実際使ってみるとイマイチ良くありません。
「網掛けが濃い色過ぎて入力文字が見えない!」という問題です。
ここで「色濃度変更プロパティを知っているか、いないか、どっち?!」で、
運命の分かれ目、的に使うか使わないかが分かれそうです。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。