エクセルVBAでクラスモジュールを使う 【第2回】外枠+格子線を引く
エクセルで作成したデータに罫線を引く時、そのデータ内のセルをどこか1つ選んで、Ctrl+Shift+*を同時に押すと、セルを含む入力データ全体が選択されます。それからどの線を引くかを選んでクリックというのをよくやっています。データを手作業で作った時は、これで十分ですが、データをマクロで自動的に作って、最後に罫線だけ手作業というのも面倒ですので、マクロ内に組み込む汎用的に使えるプロシージャをとりあえず1つ作りました。
標準モジュールにSubプロシージャを1つ作るか、フォームにボタンを作って、そのボタンのクリック時に実行されるプロシージャとして登録したりすると使えます。
罫線を引きたいシートがアクティブな状態になっているなら、
1.図1のプロシージャをクラスモジュールの"汎用"に登録する
2.Call 汎用.FrameGrids("A1", "実線") でOKです。
間違って他のシートに罫線を引いてしまう可能性がある場合は、前に1行追加しておくと、OKです。
Worksheets("シート名").Activate
Call 汎用.FrameGrids("A1", "実線")
個人的には罫線は8割以上の確率で実線(細)しか引きませんが、汎用的なものをつくるならと、線種をいろいろ追加しました。罫線を消すことは結構発生しますので、第2引数に"全クリア"と入れることでそのシート内の罫線を全部消すようにしましたが、第2引数のスペルミスがあった時のために、elseとして、"全クリア"と同じように罫線を全部消すようにしました。
シート内に不要な罫線が残っている可能性がある場合は以下のように全クリアの後に実線(細)を引く流れが良いかと思います。
Worksheets("シート名").Activate 'この行は、不要なら削除
Call 汎用.FrameGrids("A1", "全クリア")
Call 汎用.FrameGrids("A1", "実線") '対象範囲のセルならどこでもOK