Excel VBAのコードはどのモジュールに書く?

Excel VBAのコードはどのモジュールに書く?

こんにちは。コウノ工房のコウノです。
かれこれ、20年近くVBAでコーディングしています。

ExcelでVBAをコーディングするときに使うモジュールについて解説します。「Sheet1」「ThisWorkbook」「標準モジュール」と、似たような場所がいくつもあって混乱しますよね。

この記事では、それぞれのモジュールの役割と、プロも実践している正しい使い分けのルールを、初心者向けにわかりやすく解説します。

VBAのコードを書ける場所は3つ

標準モジュールにコーディングするのが基本

標準モジュール

「標準モジュール」に書いたマクロは、Excelブック内のどこからでもアクセスできる「公共の道具」になります。ボタンを押して実行するマクロや、複雑な計算処理はここに書きます。

シートモジュール (Sheet1, Sheet2...)

「Sheet1」のモジュールは、Sheet1専用の部屋です。「この部屋に入ったら電気をつける」「この部屋の家具(セル)を動かしたら音を鳴らす」といった、その場所限定のルールを書くのに適しています。

ブックモジュール (ThisWorkbook)

Excelファイル(ブック)全体に関わるルール、例えば「ファイルを開いた瞬間に挨拶する」「保存する前にチェックする」といった処理を書きます。

標準モジュールに書けば間違いない

シートに処理を書きがち

最初に結論を言ってしまうと、初心者のうちは、すべてのコードを「標準モジュール」に書いてください。これでやりたいことの9割は実現できます。

なぜシートモジュールではダメなのか?

シートモジュール(Sheet1など)をダブルクリックして書いたコードは、「Sheet1専用」になってしまいます。そのため、汎用性がなくなり、予期せぬエラーの原因になります。

正しい始め方

コードを書くときは、必ず以下の手順で「標準モジュール」を用意しましょう。

  1. VBEのメニューから [挿入] をクリック
  2. [標準モジュール] を選択
  3. 新しくできた「Module1」にコードを書く

これだけで、多くのトラブルを未然に防げます。

ここまでは、標準モジュールに書いた方がいい理由を説明してきましたが、「えっ、じゃあ他のは何のためにあるの?」と思った方のために、それぞれの役割を解説しましょう。

シートモジュール・ブックモジュールはイベントがキッカケで動作する処理

イベントがキッカケで動く処理はシート・ブックモジュールにしか書けない

「全部標準モジュールじゃダメなの?」と思うかもしれませんが、分かれていることには大きなメリットがあります。それは「特定の操作(イベント)による起動」「持ち運び(移植性)」です。

特定の操作とは、「セルに値を入力したとき」、「ブックを開いたとき」などを指します。何かのイベントがあったときに「勝手に動いてほしい(自動実行)」という特殊な事情がある時だけ、シートやブックモジュールを使います。

持ち運びとは、例えば、便利な機能付きの「請求書シート」を作ったとします。その機能をシートモジュールに書いておけば、そのシートを「移動またはコピー」で別のブックに持っていくだけで、マクロの機能も一緒に付いてきます。

「このシートさえコピーすれば使えるよ」という配布用ツールを作るとき、この独立した構造が非常に役に立つのです。

まとめ

繰り返しますが標準モジュールに書くのが基本

この使い分けを意識するだけで、VBAの理解度はグッと深まります。まずは「挿入 > 標準モジュール」、ここから始めてみましょう!

Author Profile

コウノ(
職歴年のIT技術者です。エクセル・Web制作が得意。

プロフィールの詳細

お困りごとはまずはご相談ください。パソコン・スマホ初期設定 / ツール導入・開発受付中

Back to Top