Excelマクロでモジュールを分ける3つの理由|イレギュラー対応が楽になる

Excelマクロは、最初から完璧に
作ろうとしなくても問題ありません。

ただし、一つのモジュールに
すべての処理を書いてしまうと、
後から条件を追加するときに
修正箇所が分かりにくくなります。

私は専門商社の海外営業として、
見積書の作成やデータ転記、
入力内容のチェックなどを
マクロで少しずつ自動化してきました。

実務では、作った時点よりも、
運用開始後に出てくる例外への
対応で差が出ると感じています。

Excelマクロでモジュールを分ける理由1|修正箇所を探しやすい

モジュールを分ける一番のメリットは、
修正箇所を見つけやすいことです。

例えば、一連の処理を
次のような役割で分けておきます。

  • データを読み込む処理
  • 入力内容を確認する処理
  • ファイルを保存する処理
  • 警告を表示する処理
  • 終了時に後片付けする処理

入力チェックの条件を変える場合は、
確認用のモジュールだけを見ればよく、
ほかの処理を誤って変更する
可能性も低くなります。

マクロを作った直後は、
長いコードでも内容を覚えています。

しかし、数か月後に修正するときは、
自分で作ったコードでも
意外と簡単には思い出せません。

Excelマクロでモジュールを分ける理由2|イレギュラー条件を追加しやすい

実際の仕事では、運用を始めてから
想定外の条件が見つかります。

「この場合だけ警告を出したい」
「特定の条件では処理を止めたい」
といった追加は珍しくありません。

私もメール送信前の確認処理で、
件名や本文だけではなく、
添付されたExcelファイルも
確認したくなったことがあります。

このとき、確認処理が独立していれば、
必要な機能だけを追加できます。

さらに、同じ内容の警告を
二重に表示しないようにするなど、
細かな調整もしやすくなります。

実務のマクロでは、処理の速さより、
異常があったときに正しく止まり、
修正しやすいことのほうが重要です。

Excelマクロでモジュールを分ける理由3|テストの範囲を絞りやすい

モジュールを分けておくと、
変更した部分を中心に
テストできるようになります。

例えば、保存処理を修正した場合、
入力チェックまで大きく触らずに
動作を確認できます。

私はマクロを変更するとき、
元ファイルのコピーを作り、
通常のケースと例外のケースを
分けて試すようにしています。

一つの修正が別の処理へ
思わぬ影響を与えることもあるため、
確認範囲を絞れるだけでも
作業の負担はかなり減ります。

Excelマクロのモジュール分割は「変更理由」で考える

細かく分ければよいわけではありません。

モジュールを増やしすぎると、
今度は処理の流れを追いにくくなります。

私が意識しているのは、
「何をするか」だけではなく、
「どんな理由で変更されるか」です。

例えば、入力ルールの変更と
保存先の変更は理由が異なるため、
別のモジュールにしておくと
後から扱いやすくなります。

最初は次の3つ程度でも十分です。

  • メインの処理
  • チェックする処理
  • 保存や出力を行う処理

必要になった段階で、
警告表示や後片付けの処理を
独立させれば無理がありません。

まとめ|Excelマクロは後から直せる形にしておく

仕事で使うマクロは、
一度作って終わりではありません。

使い続けるうちに出てくる
小さな例外へ無理なく対応できると、
マクロは長く使える道具になります。

まずは処理を大きく分けるところから、
少しずつ試してみてください。