複数のマクロを管理するには「1つのマクロにまとめてコメントで区切る方法」と「役割ごとに別のマクロに分けてCallで呼び出す方法」の2つがあります。最初のうちは1つにまとめる方が流れをつかみやすく、処理が増えたり使いまわしたい場合は分ける方が便利です。
この記事では、次の内容を順番に解説します。
- 1つのマクロにまとめてコメントで整理する方法
- 役割ごとに分けてCallで呼び出す方法
- どちらを使い分けるべきか
方法①:1つのマクロにまとめてコメントで整理する
全体の処理を1つのSubにまとめて、処理ごとにコメントで区切る方法です。流れが一目でわかり、初心者でも管理しやすいのが特徴です。
Sub 全体処理()
' --- データ読込処理 ---
Dim i As Long
For i = 2 To 10
Cells(i, 1).Value = "データ" & i
Next i
' --- データ整形処理 ---
Range("A1").Font.Bold = True
Range("A1:A10").Interior.Color = RGB(200, 255, 200)
' --- 罫線作成処理 ---
Range("A1:A10").Borders.LineStyle = xlContinuous
End Sub
コメントで「— データ読込処理 —」のように区切るだけで、どこで何をしているかがひと目でわかります。あちこちのマクロを見に行かなくてもいいので、処理の流れを追いやすいです。
方法②:役割ごとに分けてCallで呼び出す
処理が長くなってきたり、同じ処理を別のマクロでも使いたい場合は、役割ごとに別のSubに分けて Call で呼び出す方法が便利です。
Sub 全体処理()
Call データ読込
Call データ整形
Call 罫線作成
End Sub
Sub データ読込()
Dim i As Long
For i = 2 To 10
Cells(i, 1).Value = "データ" & i
Next i
End Sub
Sub データ整形()
Range("A1").Font.Bold = True
Range("A1:A10").Interior.Color = RGB(200, 255, 200)
End Sub
Sub 罫線作成()
Range("A1:A10").Borders.LineStyle = xlContinuous
End Sub
「全体処理」を実行すると3つのSubが順番に動きます。「データ整形だけやり直したい」というときは データ整形 だけを単独で実行することもできます。
どちらを使い分ければいい?
どちらが正解というわけではなく、状況によって使い分けるのがおすすめです。
- 1つにまとめる方が向いている場合:処理の流れを一度に確認したいとき、処理が比較的短いとき、他のマクロからは使わない処理のとき。
- 分けた方が向いている場合:処理が長くなってきたとき、同じ処理を複数のマクロから呼び出したいとき、一部だけ単独で実行したいとき。
最初は1つにまとめて作り、処理が増えてきたら分けていく、という進め方が自然です。
まとめ
複数のマクロを管理するための基本は「まとめる」か「分ける」かの2択です。
- 1つにまとめる:コメントで区切るだけ。流れが見えやすく初心者向き。
- 役割ごとに分ける:Callで呼び出す。使いまわしや部分的な実行がしやすい。
- 使い分けの基準:最初はまとめて、処理が増えたら分ける。
よくある質問
マクロの数が増えてきたらどうやって整理すればいい?
機能ごとにモジュールを分けるのがおすすめです。たとえば「ファイル操作用」「データ整形用」「印刷用」のようにモジュールを分けると、どこに何があるかわかりやすくなります。モジュールの整理については別の記事で詳しく解説しています。
全体処理を実行したときに途中で止まりたい場合は?
止まりたい場所に Exit Sub を入れると、そこで処理が終わります。条件によって途中で止めたい場合は If と組み合わせます。たとえば If エラーがあれば = True Then Exit Sub のように書きます。
Callを省略して書いても動く?
動きます。Call データ読込 と書いても データ読込 と書いても同じ動作です。ただし Call をつけると「ここで別のマクロを呼んでいる」とひと目でわかるので、読みやすさのために残しておくのがおすすめです。
同じ処理を複数のマクロで使い回すにはどうすればいい?
共通の処理を1つのSubにまとめて、必要な場所から Call で呼び出します。たとえば「ファイルを開く前の準備処理」をよく使うなら Sub 準備処理() として作っておき、複数のマクロから呼び出す形にします。
ボタンに複数のマクロを登録することはできる?
ボタンに登録できるのは1つのマクロだけです。複数の処理をボタン1つで実行したい場合は、それらを呼び出す「全体処理」のようなマクロを1つ作って、そのマクロをボタンに登録します。
動画で学びたい方へ
「記事を読んでも、実際に自分で書けるか不安…」という方には、動画で基礎からじっくり学べる講座がおすすめです。
VBAが初めての方を前提に、つまずきやすいポイントを先回りして解説しています。サンプル動画は無料でご覧いただけます。



