Contents
標準モジュールにコードを書く
標準モジュールとは
標準モジュールは、ブック全体で共通して使用する汎用的なマクロ(Subプロシージャ)や関数(Functionプロシージャ)を記述するための、最も基本的な場所です。
ここに書いたマクロは、ショートカットキーやリボンに配置したボタンに登録して使います。
手順
- Excelで
Alt+F11キーを押し、VBEを開きます。 - 画面左側の「プロジェクトエクスプローラー」で、マクロを追加したいブック名を探します。
- ブック名を右クリックし、メニューから
挿入→標準モジュールを選択します。 - プロジェクトエクスプローラーに
標準モジュールというフォルダと、その中にModule1が作成されます。 - 画面右側に表示された白いエリア(コードウィンドウ)に、以下のようにコードを記述します。これで、マクロの実行ができるようになります。
Sub MyMacro()
MsgBox "これは標準モジュールに書かれたマクロです。"
End Subシートモジュールにコードを書く方法
シートモジュールとは
シートモジュールは、特定のワークシートに関連する処理を記述する場所です。
特に、そのシート上で「セルが選択された」「値が変更された」といったイベント(出来事)をきっかけに自動実行される「イベントプロシージャ」を記述するのに使われます。
手順
- Excelで
Alt+F11キーを押し、VBEを開きます。 - 画面左側の「プロジェクトエクスプローラー」で、
Microsoft Excel Objectsフォルダ内にある、目的のシート(例:Sheet1(シート名))をダブルクリックします。 - 画面右側に、そのシート専用のコードウィンドウが表示されます。
- コードウィンドウの上部にある2つのドロップダウンリストを使います。
- 左側のドロップダウン(オブジェクトボックス)で
Worksheetを選択します。 - 右側のドロップダウン(プロシージャボックス)で、実行のきっかけとしたいイベント名(例:
SelectionChange)を選択します。
- 左側のドロップダウン(オブジェクトボックス)で
- コードの枠組みが自動で挿入されるので、
Private SubとEnd Subの間に処理を記述します。
このサンプルコードは、ユーザーが該当シートのA1セルを選択するたびに自動で実行されます。
'A1セルが選択されたらメッセージを表示する例
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address = "$A$1" Then
MsgBox "A1セルが選択されました。"
End If
End Sub 2つのモジュールの違い
| 標準モジュール | シートモジュール |
| *汎用的な処理をまとめる場所 | *特定のシートでのイベント処理を記述する場所 |
簡単に言うと、「能動的に呼び出して使う」のが標準モジュール、「何かが起きたら自動で動く」のがシートモジュールです。
コードの呼び出し方
標準モジュール
マクロ実行ダイアログ(Alt+F8)の一覧に表示され、手動で実行できます。
ボタンやショートカットキーに登録できます。
シートモジュール
基本的にマクロ実行ダイアログの一覧には表示されません。
シート上でのイベント発生時に自動で呼び出されます。
使い分けのポイント(まとめ)
- このマクロは「ボタン」で動かしたい → 標準モジュール
- この処理は「セルを編集したら」自動で動いてほしい → シートモジュール
- 複数のシートから呼び出して使いたい便利機能 → 標準モジュール
- 「Sheet1」だけで使う特別な処理 → シートモジュール
このように、マクロを「いつ」「どのように」動かしたいかに応じて、適切なモジュールを選択することが重要です😊


Excel VBAを使ってみたいけど、コードはどこに書いたらいいの?
モジュールってなに?