エクセルでいろいろな月間スケジュール表を作るケースがあると思います。
例えば、工程表、シフト表、計画表、出欠簿、カレンダーなど。
先日、土曜日、日曜日などの休日セルに、いっぺんに斜線(罫線)を引く方法がないか相談を受けました。
そこで今回、その方法を紹介します。
勤務シフトを組むための表があるとします。
そして、例えば、病院なら「定休日の木曜日と日曜日のセルに斜線を入れたい」とします。
↓ このように。
しかし、表は月はじめの1日から始まるのでスタート曜日は毎月かわり、修正が毎月必要になります。
なので、できるだけ簡単な操作で、いっぺんにまとめて罫線をひけるようにしたい。
というわけです。
その方法は、エクセルでVBA(Visual Basic for Applications)コードを書いてマクロを実行することが考えられます。
それを、以下にに説明していきます。
まず、エクセルを開いたまま、PCのキーボードの Alt + F11 を押して、VBAエディタ開きます。
[挿入(I)]メニューから[標準モジュール]を選択して新しいモジュールを追加します。
新しいモジュールにVBAコードを書いたり、別に書いたコードを貼り付けます。
定休日(木、日)のセルに斜線を入れるコードはこれ ↓
あとはマクロを実行するだけ。
実行の仕方にはいくつかあります。
- コードのどこかにカーソルを置いてF5キーを押す
- エディタの[実行(R)]メニューから[マクロの実行]を選択し[実行(R)]ボタンを押す
- エディタのメニューバーの(再生ボタン)をクリックし[実行(R)]ボタンを押す
- エクセルの[表示]メニューから[マクロアイコン]を選択して、[マクロの表示]から[実行(R)]ボタンを押す
上図は、マクロモジュールを3つ(Module1~Module3)挿入しました。
Module1は、AddDiagonalBorders で、斜線の罫線をひきます
Module2は、AddPatternFill で、網掛け(点・背景白)にします
Module3は、ClearDiagonalBordersAndPatternFillで、斜線と網掛けを消去します
Module2を実行すると ↓ こうなります。
コードはこれ ↓
Module1とModule2を実行すると、 ↓ こうなります。
Module3を実行すると、斜線と網掛けが消えます。
コードはこれ ↓
ちなみに、Moduleを複数に分けずに、一つのModuleに3つのサブルーチンコード(Sub~End Sub)をまとめても、一つずつ個別にコードを実行できます。
上記の例から適用するセルの範囲を広げるには、列や行を指定する数字を書き換えます。
For col = 3 To 16
↑ この部分は、3列目(C列・1日)から16列目(P列・14日)を指定しているので、31日まで広げるのであれば、C~AGになるので
For col = 3 To 33
に書き換えます。
Set targetRange = ws.Range(ws.Cells(5, col), ws.Cells(11, col))
↑ この部分は、5行目~11行目の7行を指定しています。
20行に範囲を広げたいならば
Set targetRange = ws.Range(ws.Cells(5, col), ws.Cells(24, col))
に書き換えます。
以上、エクセルのVBAマクロのひとつの活用方法を紹介しました。
この記事で「いままで全く分からなかったVBAの理解が一歩進んだ」と思っていただけたら嬉しいです。
まあ、欲しいという方はいないと思いますが、本記事Module1~Module3のVBAコードを書いたWordファイルをダウンロードできるようにしておきました。
パスワードは、KenUが大型自動二輪免許を取得した西暦年月日(数字8けた)です。
ヒント:ブログメニューから探す、または、ストーマ 大型自動二輪免許取得で検索
【お願い】ファイルの再配布 (二次配布)はお控えください。本記事のリンク、URL配布は可。