VBA入門
第34回.セルの書式(塗りつぶし,Interior)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-10-15

第34回.セルの書式(塗りつぶし,Interior)


セルを目立たせる最も有効な手段は、セルを色で塗りつぶすことでしょう、
セルを塗りつぶす時のマクロVBAでの解説です。


セル(Rangeオブジェクト)の塗りつぶし(パターン)は、Interiorプロパティになります。
Interiorプロパティは、Interiorオブシェクトを返します。
つまり、Interiorプロパティを経由して、Interiorオブシェクトを扱う事になります。
Range.InteriorでInteriorオブシェクトを扱い、セルの塗りつぶし指定します。

マクロVBAでのInterior指定

Range.Interior.プロパティ = 設定値
そして、Interiorオブジェクトには、以下のプロパティがあります。

プロパティ プロパティの説明 プロパティの設定値と説明
Color 塗りつぶす色 RGB値を表す長整数※1
ColorIndex 塗りつぶす色 2003までの56色カラーパレットのインデックス
何色か分かりづらいのでColorを使ったほうが良い
Pattern 塗りつぶしのパターン XlPattern 列挙
PatternColor パターンの色 RGB値を表す長整数※1
PatternColorIndex パターンの色 2003までの56色カラーパレットのインデックス
何色か分かりづらいのでColorを使ったほうが良い

2007以降では、グラデーションの指定もできますが、
かなり複雑になりますので、ここでは説明を省略します。
必要な場合は、マクロの記録を使用して下さい。
ただし基本的には、グラデーションはワークシートに設定して置く事をお勧めします。

色定数・・・※1

エクセルには、色を表す定数が容易されています。

vbBlack
vbRed
vbGreen
vbYellow
vbBlue
vbMagenta マゼンタ
vbCyan シアン
vbWhite

Range("セル範囲").Interior.Color = vbRed '赤
Range("セル範囲").Interior.Color = vbWhite '白
Range("セル範囲").Interior.Color = vbBlack '黒

RGB値を表す長整数の代わりに、上記の定数を使用することが出来ます。
カラー定数以外にも、XlRgbColor列挙などで指定することもできます。
Colorプロパティの設定値一覧
塗りつぶし、文字色、等々の色指定は結構悩ましいものがあります、Excel2003までなら、ColoIndexで56色だけだったので簡単でしたが、Excel2007以降は、フルカラーがつかえるようになった為、色指定が悩ましくなりました。Excelのフルカラーは、24ビットカラー(16,777,216色)、

RGB関数

RGB値を作成する関数として、
RGB関数が用意されています。
RGB(red, green, blue)
red, green, blue、それぞれを0~255で指定します。

Range("セル範囲").Interior.Color = RGB(255, 0, 0) '赤
Range("セル範囲").Interior.Color = RGB(255, 255, 255) '白
Range("セル範囲").Interior.Color = RGB(0, 0, 0) '黒

塗りつぶしなし

塗りつぶしを解除する場合は、

Range("セル範囲").Interior.ColorIndex = xlNone

見た目の結果は、白の塗りつぶしと同じように見えますが、
あくまで、「白の塗りつぶし」と「塗りつぶしなし」は違うということを理解してください。

条件付き書式との使い分け

条件付き書式で、データに応じて色を変更することができます。
多くの場合、マクロVBAで塗りつぶすより簡単なので良く使われていると思います。
ただし、条件付き書式は行列の挿入削除により分断が起こり、
シートが重くなる一因になることがあります。
このような場合は、
条件付き書式は使わずにマクロで塗りつぶした方が効率的かつ保守しやすくなる場合もあります。



同じテーマ「マクロVBA入門」の記事

第31回.セルの書式(表示形式,NumberFormatLocal)
第32回.セルの書式(配置,Alignment)
第33回.セルの書式(フォント,Font)
第34回.セルの書式(塗りつぶし,Interior)
第35回.セルの書式(罫線,Border)
第36回.総合練習問題4
第37回.ブック・シートの指定
第39回.セルのクリア(Clear,ClearContents)
第40回.セルのコピー・カット&ペースト(Copy,Cut,Paste)
第41回.セルのコピー&値の貼り付け(PasteSpecial)
第42回.セルをコピーするとは


新着記事NEW ・・・新着記事一覧を見る

ユーザーに絶対に停止させたくない場合のVBA設定|VBA技術解説(4月1日)
CharactersプロパティとCharactersオブジェクト|VBA技術解説(3月31日)
指数近似/対数近似/累乗近似(掲載順位とCTR)|エクセル関数超技(3月31日)
練習問題32(連続数値部分を取り出し記号で連結)|VBA練習問題(3月24日)
連続数値部分を取り出し記号で連結|エクセル関数超技(3月24日)
数式バーの高さを数式の行数で自動設定|VBAサンプル集(3月21日)
LET関数(数式で変数を使う)|エクセル入門(3月21日)
スピルに対応したXSPLITユーザー定義関数(文字区切り)|VBAサンプル集(3月15日)
XMATCH関数(範囲から値を検索し一致する相対位置)|エクセル入門(3月14日)
XLOOKUP関数(範囲を検索し一致する対応項目を返す)|エクセル入門(3月14日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
6.変数宣言のDimとデータ型|VBA入門
7.ひらがな⇔カタカナの変換|エクセル基本操作
8.繰り返し処理(For Next)|VBA入門
9.徹底解説(VLOOKUP,MATCH,INDEX,OFFSET)|エクセル関数超技
10.セルに文字を入れるとは(Range,Value)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ