こんにちは、今回の記事はExcelでセル色の塗りつぶしがあるかないかで処理を変更するマクロサンプルVBAを作成してみましたので、共有します!
マクロの中で、セルが色付いていた場合の処理とそうでない処理を分けたい時ってないですか?例えば以下のようなシーンです。
- 塗りつぶされたセルがあれば処理をする、塗りつぶされていなければ何もしない
- セルの色が赤だったら、セルの色が青だったら、の分岐処理
実際に私もこういうマクロが欲しい場面があったので、マクロを作成しました。この記事ではサンプルマクロを共有しています。それではいってみましょう!
塗りつぶしあり・なしを判定して分岐処理するサンプルマクロ
概要
セルが塗りつぶされているか・いないかを判定して処理を分けるサンプルマクロです。指定されたセルの色を判定し、色が塗りつぶされているかどうかに応じて異なるメッセージを表示します。
サンプルマクロ
サンプルマクロは以下です。
アクティブシートのセル A1 の色を判定し、セル A1 が塗りつぶされていない場合、「塗りつぶしなし」のメッセージボックスが表示されます。セル A1 が塗りつぶされている場合、「塗りつぶしあり」のメッセージボックスが表示されます。
ちなみに、セルが何色で塗りつぶされているかは関係なく、背景色が青色でも赤色でも、塗りつぶしがあるかどうかで判定します。
Sub fillJudge()
' 色判定を行うサンプル
If ActiveSheet.Range("A1").Interior.ColorIndex = -4142 Then
' 塗りつぶしなしの場合の処理
MsgBox ("塗りつぶしなし")
Else
' 塗りつぶしありの場合の処理
MsgBox ("塗りつぶしあり")
End If
End Sub
サンプルマクロ補足
サンプルマクロについての追加解説です。判定には Interior オブジェクトの ColorIndex を使っています。これは、背景色をVBAで決められた番号で指定する方法です。例えば、1は黒、2は白、3は赤というふうに番号に色が対応しており、全部で56の設定があります。
今回利用したインデックス番号 -4142 はExcelでは xlNone として定義されており、セルに塗りつぶしがないことを示します。この値を使用することで、セルが塗りつぶされているかどうかを簡単に判定できます。
特定の色で処理を分ける場合のサンプルマクロ
概要
塗りつぶしの背景色で処理を分岐させるサンプルマクロです。例えば、青色ならAの処理を、赤色ならBの処理を、緑色ならCの処理を実行するといった具合です。カラーインデックスや色定数では特定の色しか指定できないため、RGB値を使って判定するサンプルとなっています。
サンプルマクロ
事前準備:色の値を調べる
事前に背景色のRGB値を確認しておきます。手順は以下です。
- 処理を分けたい色で塗りつぶしされたセルを選択
- 右クリック>[セルの書式設定]
- [塗りつぶしタブ]>[その他の色]ボタンクリック
- [ユーザ設定]タブ>RBG値をメモ
RGB値とはR(赤)・G(緑)・B(青)の値になります。RGBの順でメモしておけば、大丈夫です。マクロでもこの並びで指定していきます。この記事では上記画像の赤っぽい色で、R:255・G:124・B:128の値で現わされている色でサンプルマクロを書いていきますね。
マクロ
サンプルマクロは以下です。
このマクロは、アクティブシートのセル A1 の背景色を判定し、それに応じて異なるメッセージを表示します。具体的には、セル A1 の背景色が先ほど調べた赤色(RGB値が253, 233, 217)で塗りつぶされていれば「赤色」というメッセージが表示され、それ以外の色であれば「それ以外の色」と表示されます。
RBG値を指定することで、特定の色に基づいた処理を分岐させることができます。
Sub fillJudge()
If ActiveSheet.Range("A1").Interior.Color = RGB(253, 233, 217) Then
' 赤色の処理
MsgBox ("赤色")
Else
' それ以外の色の処理
MsgBox ("それ以外の色")
End If
End Sub
マクロサンプル補足
このサンプルマクロについての補足解説です。色指定の方法には、56色の中から指定するインデックスカラーや vbBlack、vbWhite などの定数で指定する方法があります。(興味あればググってみると良いかもです!)今回はRGB値を使用して判定しています。
もし、一色だけでなく数種類の色で判定する場合は、IF・Else だけでなく、IF・ElseIf・Else を使って分岐させることが可能です。
さいごに
いかがだったでしょうか。サンプルマクロが少しでも参考になったのなら幸いです。
マクロについて詳しくなってみませんか?
Excelマクロが使えるようになれば、日々の業務も捗ります。
![Excelマクロ&VBA やさしい教科書 [2019/2016/2013/Office 365対応] (一冊に凝縮)](https://m.media-amazon.com/images/I/518n2aJFijL._SL160_.jpg)
Excelマクロ&VBA やさしい教科書 [2019/2016/2013/Office 365対応] (一冊に凝縮)
古川順平 著
マクロって痒いところに手が届く処理ができて便利だなと改めて思った日でした!それでは、また!