Excel VBA | 超初心者(Excel操作+マクロ体験):VBA基礎環境 – 標準モジュール追加

Excel VBA VBA
スポンサーリンク

Excel VBAと標準モジュールの関係をイメージする

Excel VBA は「Excelを自動で動かすための言語」です。
その“命令文”を書いて保存しておく箱が「標準モジュール」です。

超ざっくり言うと、こういう役割分担になります。

Excel本体=表やグラフを表示する場所
VBA=「こう動け」と命令を書く言語
標準モジュール=その命令(マクロ)をしまっておくファイル内の箱

VBAでマクロを書き始めるとき、ほぼ必ず使うのが標準モジュールです。
「VBAを書く場所=標準モジュール」と覚えてしまってOKなくらい、出番が多い存在です。

標準モジュールとは何かを超初心者向けにかみ砕く

標準モジュールは「マクロを入れる共通の箱」

標準モジュールは、VBAプロジェクト(ブックの中のVBAの世界)の中で、コードを書くための“汎用の箱”です。

ここに書いた Sub や Function は、基本的にどこからでも呼び出せます。
シートのボタンからでも、他のマクロからでも、メニューの「マクロ」からでも実行できます。

イメージとしては、こうです。

・シートモジュール:そのシート専用のイベント(セルを変更したときなど)を書く場所
・ThisWorkbook:ブック全体のイベント(開いたとき、閉じたときなど)を書く場所
・標準モジュール:汎用的な処理(あいさつ、集計、書式設定など)を書く場所

「どのシートからでも使いたい処理」は、標準モジュールに書く、というのが基本ルールです。

なぜ“標準”モジュールなのか

標準モジュールの“標準”は、「特別な条件に縛られない、共通の場所」という意味です。

シートモジュールは「そのシートに紐づく」
ユーザーフォームは「そのフォームに紐づく」

それに対して標準モジュールは、「どこにも紐づかない、全体から見える場所」です。
だからこそ、共通処理やメインのマクロを置くのに向いています。

標準モジュールを追加する具体的な手順

ここからは、実際に「標準モジュールを追加する」ところを、超初心者目線で順番に説明します。
前提として、開発タブが表示されていて、VBE(Visual Basic Editor)が開ける状態になっているとします。

手順1:VBEを開く

1.Excelでマクロ有効ブック(拡張子 xlsm)を開く。
2.開発タブの「Visual Basic」ボタンをクリックする。
  または、キーボードで Alt+F11 を押す。

これで、VBE(VBAエディタ)の画面が開きます。
左側に「VBAProject(ブック名)」、右側に大きな空白のエリアが見えていればOKです。

手順2:標準モジュールを挿入する

1.VBEの上のメニューから「挿入」をクリックする。
2.表示されたメニューから「標準モジュール」を選ぶ。

すると、左側のプロジェクトエクスプローラーに「Module1」という項目が追加されます。
同時に、右側に真っ白なコードウィンドウが表示されます。

この「Module1」が、あなたの最初の標準モジュールです。
ここに、マクロ(Sub)や関数(Function)を書いていきます。

手順3:標準モジュールが追加されたことを確認するポイント

確認するポイントは二つです。

1つ目:左のツリーに「Module1」が見えているか。
2つ目:右側のタイトルバーに「Module1(コード)」のような表示が出ているか。

この状態になっていれば、「標準モジュール追加」は成功です。
以後、VBAコードはこのモジュールの中に書いていくことになります。

標準モジュールに初めてのマクロを書いてみる例題

標準モジュールの役割は、「マクロを入れる箱」です。
なので、実際にマクロを書いてみると、一気にイメージが固まります。

例題1:メッセージを表示するだけのマクロ

先ほど追加した Module1 のコードウィンドウに、次のコードを入力してみてください。

Sub あいさつ()

    MsgBox "標準モジュールから、こんにちは!"

End Sub
VB

入力し終わったら、どこか別の行をクリックしてみてください。
自動でインデント(字下げ)が整えば、VBEがコードとして認識してくれています。

コードの意味をかみ砕いて説明

Sub あいさつ()
これは「マクロのはじまり」を表す宣言です。
Sub は「サブルーチン(処理のかたまり)」の略で、あいさつ はマクロの名前です。
この名前で「マクロの実行」画面に表示されます。

MsgBox “標準モジュールから、こんにちは!”
MsgBox は「メッセージボックスを表示して」という命令です。
ダブルクォーテーションで囲まれた文字列が、そのまま画面に表示されます。

End Sub
「このマクロはここで終わりです」という区切りです。
Sub ~ End Sub の間に、実際の処理を書いていきます。

実行してみる

1.VBEで、今書いたマクロの中(Sub あいさつ() の行など)にカーソルを置く。
2.キーボードの F5 キーを押す。

すると、Excel側に戻ってメッセージボックスが表示されます。
「標準モジュールから、こんにちは!」と出れば成功です。

ここで大事なのは、「このマクロはシートに紐づいていない」という点です。
どのシートを表示していても、同じように実行できます。
これが「標準モジュールに置いたマクロ」の特徴です。

例題2:セルに文字を書き込むマクロ

同じ Module1 に、次のマクロを追加してみましょう。

Sub セルに書き込む()

    Range("A1").Value = "標準モジュールから書き込みました"

End Sub
VB

このマクロは、「アクティブなシートの A1 セルに文字を書き込む」処理です。

Range(“A1”).Value = “標準モジュールから書き込みました”
Range(“A1”) は「A1セル」を表し、.Value はそのセルの中身(値)を意味します。
= の右側に書いた文字列が、そのままセルに入ります。

VBEで F5 を押して実行し、Excelのシートに戻って A1 セルを確認してみてください。
文字が入っていれば、標準モジュールからシートを操作できたことになります。

標準モジュールを使う意味をもう一段深掘りする

なぜ「標準モジュールに書く」のか

超初心者のうちは、「とりあえず動けばどこでもいいのでは?」と思いがちです。
でも、標準モジュールに書くことには、ちゃんと理由があります。

1つ目の理由:どこからでも呼び出せる
標準モジュールに書いたマクロは、マクロ一覧からも、ボタンからも、他のマクロからも呼び出せます。
「この処理はあちこちで使いたい」というときに、とても都合がいいです。

2つ目の理由:整理しやすい
処理ごとに標準モジュールを分けることで、「集計用」「印刷用」「共通関数用」など、役割ごとに整理できます。
コードが増えてきたときに、「どこに何が書いてあるか」が分かりやすくなります。

3つ目の理由:イベントと分離できる
シートのイベント(セル変更時など)はシートモジュールに書き、
実際の処理は標準モジュールに書く、という分け方ができます。
これにより、「きっかけ」と「中身」が分離され、修正しやすくなります。

標準モジュールを複数作るイメージ

標準モジュールは、1つだけでなく、いくつでも追加できます。

たとえば、こんな分け方がよくあります。

Module1:メイン処理(全体の流れ)
Module2:集計系の処理
Module3:文字列処理や共通関数

超初心者のうちは、まず Module1 だけで十分です。
コードが増えてきて「ごちゃごちゃしてきたな」と感じたら、分けることを考えればOKです。

まとめと、次の一歩

今日おさえてほしいポイント

標準モジュールは、「マクロ(Sub)や関数(Function)を書くための共通の箱」。
VBEで「挿入 → 標準モジュール」とすることで追加できる。
追加すると、左のプロジェクトエクスプローラーに「Module1」などが現れ、右にコードを書く画面が出る。
標準モジュールに書いたマクロは、どのシートからでも実行できる“汎用の処理”になる。
まずは、メッセージ表示やセル書き込みなどの簡単なマクロを、標準モジュールに書いて動かしてみるのが最良の練習。

ここまで理解できていれば、「標準モジュール追加でつまずく段階」はもう卒業です。

次の一歩としての小さなチャレンジ

同じ標準モジュールの中に、マクロをもう一つ増やしてみてください。

Sub 複数セルに書き込む()

    Range("A1").Value = "上段左"
    Range("B1").Value = "上段右"
    Range("A2").Value = "下段左"
    Range("B2").Value = "下段右"

End Sub
VB

これを実行して、「あ、標準モジュールからシートを自由に操れているな」という感覚をつかめたら、次は「マクロの呼び出し方」や「複数モジュールの使い分け」に進んでいけます。

タイトルとURLをコピーしました