Excel 月間予定表の休日セル全部に斜線罫線をいれるVBAマクロ

投稿日:


勤務シフトを組むための表があるとします。
そして、例えば、病院なら「定休日の木曜日と日曜日のセルに斜線を入れたい」とします。

↓ このように。


しかし、表は月はじめの1日から始まるのでスタート曜日は毎月かわり、修正が毎月必要になります。
なので、できるだけ簡単な操作で、いっぺんにまとめて罫線をひけるようにしたい。
というわけです。

その方法は、エクセルでVBA(Visual Basic for Applications)コードを書いてマクロを実行することが考えられます。

それを、以下にに説明していきます。


まず、エクセルを開いたまま、PCのキーボードの Alt + F11 を押して、VBAエディタ開きます。


[挿入(I)]メニューから[標準モジュール]を選択して新しいモジュールを追加します。


新しいモジュールにVBAコードを書いたり、別に書いたコードを貼り付けます。

定休日(木、日)のセルに斜線を入れるコードはこれ ↓


あとはマクロを実行するだけ。
実行の仕方にはいくつかあります。

  1. コードのどこかにカーソルを置いてF5キーを押す
  2. エディタの[実行(R)]メニューから[マクロの実行]を選択し[実行(R)]ボタンを押す
  3. エディタのメニューバーの(再生ボタン)をクリックし[実行(R)]ボタンを押す
  4. エクセルの[表示]メニューから[マクロアイコン]を選択して、[マクロの表示]から[実行(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配布は可。

コメントを残す