VBAで複数のマクロをまとめて管理する方法|1つにまとめる方法と役割ごとに分ける方法

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

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

コメントする

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

上部へスクロール