今回は上記の画像のように見出しだけ色を変えて入力ミスを防ぐ方法を紹介したいと思います。
数行のVBAだけで実装することができるので非常に便利です。
ファイルのダウンロード
どんな感じで色が変わるのか試してみたい方のために下記にファイルを乗せていますので、確認してみてください。
枠内のセルを選択すると上部の見出しセルと左の見出しセルのみが黄色になるようにプログラムしています。
枠外のセルを選択すると背景は透明になります。
印刷するときに枠外を選択することによって色が印刷されないようになっています。
VBAのコード
今回のコードはmoduleではなく色を変えたいsheetに記述していきます。
今回のソースコードのすべては下記に載せておきます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'指定行を塗りつぶしなしにする。
Rows(1).Interior.Pattern = xlNone
'指定列を塗りつぶしなしにする。
Columns(1).Interior.Pattern = xlNone
'枠内だったら色をつける為の条件分岐
If Target.Row <= 29 And Target.Column <= 22 Then
'1列目に色をつける。
Cells(Target.Row, 1).Interior.Color = 65535
'1行目に色をつける。
Cells(1, Target.Column).Interior.Color = 65535
End If
End Sub
各行のざっくりとした説明はコード内に載せています。
下記から詳しい説明をしていきます。
各行の読み方と解説
1行目:選択セルが変更されたときに呼び出されるマクロ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
上記の部分が選択セルが変わった時に呼び出されるマクロです。
Subの「Worksheet_SelectionChange」がマクロ名です。
このマクロ名はデフォルトで準備されているものなので、変更することはできません。
プログラムを実行しても変更されない場合は綴りが間違っている可能性があります。
2行目:見出し行のセルをすべて塗りつぶしなしにする。
Rows(1).Interior.Pattern = xlNone
上記のコードが見出し行のセルの塗りつぶしをなしにするコードです。
「Rows(1)」が行すべてを指定しています。
()の中の数字を変更することで、塗りつぶしなしにしたい行を変更できます。
また、「Interior.Pattern = xlNone」の部分が塗りつぶしなしを行うコードです。
日本語訳すると、「インテリアのパターンなし」ですね笑
3行目:見出し列のセルをすべて塗りつぶしなしにする。
Columns(1).Interior.Pattern = xlNone
上記のコードが見出し列のセルの塗りつぶしをなしにするコードです。
「Columns(1)」が列のすべてを指定しています。
()の中の数字を変更することで、塗りつぶしなしにしたい列を変更できます。
4行目:枠内のみ色を変更するための条件分岐
If Target.Row <= 29 And Target.Column <= 22 Then
上記のコードが5行目以降を実行するかしないかを判断するためのコードになります。
「Target」の中身は選択したセルが入っています。(正確にはRangeです)
ですので、「Target.Row」とすることで、選択したセルの行番号を確認できます。
また、「Target.Column」とすることで、選択したセルの列番号を確認できます。
5、6行目:選択したセルの列の見出しと行の見出しの背景を塗りつぶすコード
Cells(Target.Row, 1).Interior.Color = 65535
Cells(1, Target.Column).Interior.Color = 65535
上記の2行がセルの背景を変更するコードです。
「Cells(行番号、列番号)」でセルを選択することができ、背景の色を指定するのに「Interior.Color」
を使用しています。ちなみに「65535」は黄色を指しています。
Targetから行番号や列番号を取り出して指定することによって色を変える場所を自由に変更しています。
今回「1」と記述してある部分を変更することによって、2行目や3列目などの好きな行・列の色を変更することができます。
まとめ
今日大量のセルがあるデータを作成していて、どこに入力しているのかわからなくなって何回も入力しなおすハメになってしまったので、作成しました。
同じような状況になっている方の参考になれば幸いです。
コメント