VBAで別のマクロを呼び出すには、Call マクロ名 と書くだけです。よく使う処理を1つのマクロにまとめておいて、他のマクロから呼び出すようにすると、同じコードを何度も書かずに済み、修正も1か所だけで済むようになります。
この記事では、次の内容を順番に解説します。
- Callを使ったマクロの呼び出し方
- 印刷マクロを呼び出す具体的な例
- 複数のマクロから同じ処理を呼び出す使い方
- Callを使うときの注意点
別のマクロを呼び出すには?
Call マクロ名 と書くだけで、そのマクロが実行されます。
Sub メインのマクロ()
Call 使いたいマクロ名
End Sub
Call は省略して 使いたいマクロ名 だけでも動きますが、「ここで別のマクロを呼んでいる」とひと目でわかるように、Call を残したままにしておくのがおすすめです。
実際にどう使う?印刷マクロを呼び出す例
たとえば「請求書を作成したあとに印刷する」という流れを自動化したい場合、印刷の処理だけを別のマクロにしておいて、Call で呼び出すことができます。
Sub 請求書発行()
' 請求書を作成する処理
' ...
Call 印刷 ' 印刷マクロを呼び出す
End Sub
Sub 印刷()
ActiveSheet.PrintOut ' 開いているシートを印刷する
End Sub
「印刷」マクロを別に作っておくことで、他のマクロからも同じように Call 印刷 と書けば呼び出せます。印刷の設定を変えたいときも、「印刷」マクロの中だけを直せばOKです。
複数のマクロから同じ処理を呼び出すには?
たとえば「ファイルを閉じる前に毎回やること」がある場合、その処理を1つのマクロにまとめておいて、各マクロから呼び出す形にすると便利です。
Sub Aの処理()
' Aの処理...
Call ファイルを閉じる準備
End Sub
Sub Bの処理()
' Bの処理...
Call ファイルを閉じる準備
End Sub
Sub Cの処理()
' Cの処理...
Call ファイルを閉じる準備
End Sub
' ファイルを閉じる前にやること(共通の処理)
Sub ファイルを閉じる準備()
' パスワードを設定する
' 指定した範囲を保護する
' 特定のシートを非表示にする
End Sub
「ファイルを閉じる準備」の中身を変えたいときは、そのマクロを1か所直すだけで、A・B・Cの処理すべてに反映されます。
Callを使うときの注意点
Call はとても便利ですが、使いすぎるとコードがあちこちに分散して、どこで何をしているか追いにくくなります。「何度も使う処理」に絞って使うのがポイントです。
1回しか使わない処理はわざわざ別のマクロにしなくても、同じマクロの中に書いた方がシンプルでわかりやすくなります。
まとめ
Call を使ったマクロの呼び出しは、コードを整理して使い回しやすくするための基本テクニックです。
- 呼び出し方:
Call マクロ名と書くだけ。 - Callを省略できる:ただしわかりやすさのために残すのがおすすめ。
- 共通処理はまとめる:複数のマクロから呼び出せるようにしておくと、修正が1か所で済む。
- 使いすぎに注意:何度も使う処理に絞って使うのがポイント。
よくある質問
呼び出したマクロが終わったら、元のマクロに戻ってくる?
はい、戻ってきます。Call で呼び出したマクロが終わると、呼び出した場所の次の行から処理が続きます。呼び出しと戻りを繰り返しながら、順番に処理が進んでいきます。
別のモジュールに書いたマクロも呼び出せる?
はい、呼び出せます。同じブック内であれば、別のモジュール(コードを書く場所)に書いたマクロでも Call マクロ名 で呼び出すことができます。
マクロに値を渡しながら呼び出すことはできる?
できます。呼び出すマクロ側で受け取る値を設定しておけば、Call マクロ名(値) のように値を渡せます。たとえば印刷枚数を渡して、その枚数分だけ印刷するマクロを作ることもできます。
呼び出したマクロの途中で元のマクロに戻ることはできる?
通常は呼び出したマクロが最後まで実行されてから戻ります。途中で処理を止めて戻りたい場合は、呼び出したマクロの中で Exit Sub を使うと、そこで処理を終わらせて元のマクロに戻ることができます。
CallとCallを省略した書き方は何か違う?
動作は同じです。ただし慣れないうちはどちらを使えばいいか迷うこともあるため、Call をつけて書いておくのがおすすめです。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



