【VBA】関数を書く場所の違い(標準モジュール、Worksheet、外部ファイル)

Excel VBAで処理を記述する場所はいくつもありますが、それをどのように使い分けるかについて記載します。大きく分けて記述先は「標準モジュール」・「Worksheetオブジェクト」・「外部ファイル」の3つに分かれます。どこに書いても処理は行われますが、コードのわかりやすさの観点からこの3つをうまく使い分けるようにした方が良いです。

スポンサーリンク

標準モジュールに記述すべきコード

標準モジュールは複数のワークシート間での処理に関するコードなど、一つのワークシートにとらわれない処理を記載する場合に使用します。マクロの記録などを行った場合にコードが記述される先なので何も考えずにこちらに書いている方も多いと思いますが、一つのシートに対してのみ行う処理については、後述するWorksheetオブジェクトにコードを記載する方が良いです。

標準モジュールは、プロジェクトエクスプローラ上で「右クリック > 挿入 > 標準モジュール」と進むことにより作成できます。

Worksheetに記述すべきコード

Worksheetオブジェクトにはそのワークシートのみに対して行われる処理を記載します。例えばワークシート上のあるセルの値が変更されたときの処理などがそれにあたります。別に標準モジュールに記載しても不都合があるわけではありませんが、コードのわかりやすさの観点から記述場所はできるだけ使い分けたほうがベターです。

外部ファイルに記述すべきコード

外部ファイルには複数のブックで使いまわしたいコードを記載しておきます。コードを修正したりする際も外部ファイルで一括管理できます。ブックそれぞれで同じコードを何度も書くのは、効率の観点からもメンテナンスの観点からも望ましくないので、汎用性の高いコードはすべて外部ファイルにまとめて書き込んでしまいましょう。

コードを書き込む外部ファイルの拡張子としては、「.xlsm」などの通常のExcelワークブックも利用できますが、「.xlam」というアドイン用のものにしておきましょう。

外部ファイルに書き込んだコードを使用するには、VBAエディタから「ツール > 参照設定」と進み、開いた参照設定ダイアログの「参照」ボタンを押してフォイルを読み込めばOKです。