こんにちは、Ryoです。
Excelは標準で多彩な網掛けパターンを持っていますので、用途に応じて使用する機会も多々あるかと思います。この網掛けはVBAでもPatternプロパティ、xlPatternクラス定数を使用することで設定できますので、今回はその内容について書いていきたいと思います。
1.Patternプロパティの構文
オブジェクト.Pattern = Expression
この構文でxlPatternクラスの定数を使用し、対象とするセルへ網掛け設定を使用とする場合は、セル背景や色などを管理するInteriorオブジェクトをあわせて使いますので、例えばセルA1にチェック網掛けを指定しようとする場合はこのようになります。
Sub Sample1() Cells(1, 1).Interior.Pattern = xlPatternChecker End Sub
これを実行するとセルA1にチェックのパターンが設定されます。
またxlPatternクラスの定数としては以下の通りなので、用途に応じて選定しPatternプロパティに設定します。
定数 | 値 | 内容 |
xlPatternChecker | 9 | チェッカーボード |
xlPatternCrissCross | 16 | 十字線 |
xlPatternDown | -4121 | 左上から右下への濃い対角線 |
xlPatternGray16 | 17 | 灰色16% |
xlPatternGray25 | -4124 | 灰色25% |
xlPatternGray50 | -4041 | 灰色50% |
xlPatternGray75 | -4042 | 灰色75% |
xlPatternGray8 | 18 | 灰色8% |
xlPatternGrid | 15 | グリッド |
xlPatternHorizontal | -4044 | 濃い横線 |
xlPatternLightDown | 13 | 左上から右下への明るい対角線 |
xlPatternLightHorizontal | 11 | 明るい横線 |
xlPatternLightUp | 14 | 左下から右上への明るい対角線 |
xlPatternLightVertical | 12 | 明るい縦線 |
xlPatternNone | -4058 | パターンなし |
xlPatternSemiGray75 | 10 | 濃いモアレ縞75% |
xlPatternSolid | 1 | 純色 |
xlPatternUp | -4162 | 左下から右上への濃い対角線 |
xlPatternVertical | -4166 | 濃い縦線 |
表内には書いていませんが、「自動」設定とするxlPatternAutomatic(値:-4105)というものもありますのでご参考までに。
では、これらを使用したサンプルコードなどについて次以降に書いていきます。
2.サンプルコード
xlPatternクラス定数をそれぞれ使用した場合にどのような網掛けになるのか見比べる為に以下のような簡単な表を作成しています。
この表に対し、次のサンプルコードを実行します。繰り返し処理を行う都合上、配列変数Themeにクラス定数を格納し、For文内で指定しています。
Sub Sample2() Dim i As Integer Dim Theme(1 To 19) As String '配列にxlPatternクラス定数を格納 Theme(1) = xlPatternChecker Theme(2) = xlPatternCrissCross Theme(3) = xlPatternDown Theme(4) = xlPatternGray16 Theme(5) = xlPatternGray25 Theme(6) = xlPatternGray50 Theme(7) = xlPatternGray75 Theme(8) = xlPatternGray8 Theme(9) = xlPatternGrid Theme(10) = xlPatternHorizontal Theme(11) = xlPatternLightDown Theme(12) = xlPatternLightHorizontal Theme(13) = xlPatternLightUp Theme(14) = xlPatternLightVertical Theme(15) = xlPatternNone Theme(16) = xlPatternSemiGray75 Theme(17) = xlPatternSolid Theme(18) = xlPatternUp Theme(19) = xlPatternVertical For i = 1 To 19 'セルC4から下方向へ網掛けを実行する Cells(i + 3, 3).Interior.Pattern = Theme(i) Next i '配列データの解放 Erase Theme End Sub
実行結果としてはこの通りです。
ちなみに色を付けたい場合は次のようにInterior.ColorIndex指定を行えばOKです。
Sub Sample3() Dim i As Integer Dim Theme(1 To 19) As String '配列にxlPatternクラス定数を格納 Theme(1) = xlPatternChecker Theme(2) = xlPatternCrissCross Theme(3) = xlPatternDown Theme(4) = xlPatternGray16 Theme(5) = xlPatternGray25 Theme(6) = xlPatternGray50 Theme(7) = xlPatternGray75 Theme(8) = xlPatternGray8 Theme(9) = xlPatternGrid Theme(10) = xlPatternHorizontal Theme(11) = xlPatternLightDown Theme(12) = xlPatternLightHorizontal Theme(13) = xlPatternLightUp Theme(14) = xlPatternLightVertical Theme(15) = xlPatternNone Theme(16) = xlPatternSemiGray75 Theme(17) = xlPatternSolid Theme(18) = xlPatternUp Theme(19) = xlPatternVertical For i = 1 To 19 'セルC4から下方向へ網掛けを実行する 'サンプルとして色はオレンジ色(ColorIndex=45)指定 With Cells(i + 3, 3) .Interior.ColorIndex = 45 .Interior.Pattern = Theme(i) End With Next i '配列データの解放 Erase Theme End Sub
ColorIndexについて詳細は触れませんが、使用頻度高そうな色のIndex値は黒:1、白:2、赤:3、緑:4、青:5、黄:6、紫:7、水色:8、茶色:9、ピンク:38です。
3.まとめ
セルへの配色や網掛け設定は、集計作業やデータ収集などを行った際に区分したい結果を強調表示できるので何かと有用な機能だと思います。
但し、このような網掛けを使いすぎると見る側が視覚的に慣れてしまって強調表示の効果が半減しますのでご利用は計画的に(笑)
以上、セルに網掛け(パターン)を設定する方法についてでした!今回の記事が何かの参考になれば幸いです。
Ryo