VBAでマクロを呼び出す方法:「Call」を活用する
VBAでは、1つのマクロ(プロシージャ)を他のマクロ内で呼び出して使うことができます。
これにより、同じ処理を何度も書かずに済み、コードがスッキリする というメリットがあります。
例えば、印刷のマクロ を作成しておけば、他のマクロから簡単に印刷処理を呼び出す ことができます。
・A4で全てのデータが収まるようにした印刷のマクロ
・A4で2ページになるように設定した印刷のマクロ
・A4で横の設定にした印刷のマクロ など
1. マクロを呼び出す方法
VBAでは、マクロの呼び出しに 「Call」ステートメント を使用します。
Sub メインのマクロ()
Call 使いたいマクロ名
End Sub
「Call」を記述するだけ で、他のマクロを実行できます。
また、「Call」は省略することも可能です(使いたいマクロ名
だけでも動作します)。
ただ、省略してしまうとなんの作業をしているか分かりづらくなるので、Callは残したままにすることをお勧めします。
2. 実際のコード例(印刷マクロの呼び出し)
例えば、「請求書を作成するマクロ」を実行した後に 印刷処理 を自動で実行したい場合、次のように記述します。
Sub 請求書発行()
'請求書作成マクロの処理
Call 印刷 ' 印刷マクロを呼び出す
End Sub
' 印刷マクロ
Sub 印刷()
ActiveSheet.PrintOut ' アクティブシートを印刷
End Sub
内容
請求書発行
マクロの中でCall 印刷
を記述すると、請求書発行
マクロが終わった後に、印刷
マクロが実行される。- 印刷処理を別のマクロとして定義することで、他のマクロでも簡単に使い回せる。
今回は非常にシンプルな印刷マクロにしていますが、ここには印刷に関する詳細な設定をすることで、この内容の時は「このパターン」、違う内容に時は「このパターン」などパターンを分けることができます。
3. 複数の動作をまとめて処理する
マクロの呼び出しは、特定の手順を繰り返し使いたいとき に非常に便利です。
例えば、ファイルを閉じる前に次の動作を毎回行いたいとします。
- パスワードを設定する
- 指定範囲を保護する
- 特定のシートを非表示にする
この場合、「ファイルを閉じる前の処理」を1つのマクロとして作成 し、各マクロから呼び出すことで、何度も同じコードを書く必要がなくなります。
Sub Aの処理()
' Aの処理・・・
Call ファイルを閉じる準備
End Sub
Sub Bの処理()
' Bの処理・・・
Call ファイルを閉じる準備
End Sub
Sub Cの処理()
' Cの処理・・・
Call ファイルを閉じる準備
End Sub
' ファイルを閉じる前の共通処理
Sub ファイルを閉じる準備()
' パスワードを設定
' 指定範囲を保護
' 特定のシートを非表示
' ここで必要な処理をまとめる
End Sub
ポイント
- 「ファイルを閉じる準備」マクロを1つ作成し、他のマクロから呼び出す ことで、同じ処理を何度も書かずに済む。
- コードが整理され、修正が必要になった際も1か所直せばOK!
まとめ
VBAの 「Call」ステートメント を使うことで、他のマクロを簡単に呼び出すことができます。
方法 | 説明 |
---|---|
Call 使いたいマクロ名 | 他のマクロを実行する |
複数のマクロから共通処理を呼び出す | 同じコードを何度も書かずに済む |
マクロの呼び出しを活用するメリット ・コードがシンプルになり、読みやすくなる
・同じ処理を何度も書く必要がなくなる
・修正が必要なときも、1つのマクロを変更するだけで済む
同じ処理を繰り返し書きそうになったら、「別マクロにして呼び出す」ことを検討しましょう!
ただし、Callを乱用するとあちらこちらにコードがあることになり、コードを行ったり来たりしないといけなくなってしまうので、繰り返し使うものに限定して、使用することをお勧めします。
コメント