VBAでマクロを呼び出す方法|Callの使い方と共通処理をまとめるコツ

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が初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。

動画で学ぶExcelマクロ|JIMOVEオンラインスクール

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール