マクロが増えると管理が大変になる
Excel VBAで複数の処理を作成していくと、ブック内にたくさんのマクロが増えてきます。最初は1つずつでも、次のような悩みが出てきます。
- 「どこに何の処理があるのか分からなくなる」
- 「似たような処理がいくつもある」
- 「一部だけ実行したいけど、うまく選べない」
こういったときには、マクロを整理の方法したり、呼び出す処理を追加したりするのが効果的です。
実装するメリット
- マクロを1か所にまとめて把握しやすくなる
- 必要な処理だけを個別に呼び出せる
- 修正や追加がしやすくなる
基本の考え方:1つのマクロに処理をまとめてわかりやすくする
複数のマクロを作るのではなく、1つのマクロの中に処理をまとめて、コメントで処理ごとに区切る方法も効果的です。
全体が一つのマクロになっているため、あちらこちらを見なくても、一つのマクロで最初から最後まで流れを見ることができます。
必要に応じてCall
で別のマクロを呼ぶ方法もありますが、まずは1つのSubで構成するのがわかりやすい構成になります。
具体例:1つのマクロにまとめてコメントで整理する
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
解説
- 1つのSubプロシージャ(Sub〜End Subのこと)に全てのマクロを入れています
- 処理ごとにコメントでセクションを分けることで見やすさが向上します
Call
は使わず、あえて1本化した構成にしています
もちろん、処理が共通化できるときや他の場所でも使うときは、別のマクロをCall
で呼ぶのも効果的です。
コツ:処理の単位を「動作のまとまり」で分ける
たとえば
- ファイルを開く
- データを貼り付ける
- フィルターをかける
- 印刷設定をする
このように、機能ごとにマクロを分けることで、コードが読みやすくなり、修正もしやすくなります。
補足:サブプロシージャを分けて使いまわす方法もある
処理が長くなる場合や、同じ処理を他のマクロからも使いたいときには、サブプロシージャを作って、Call
またはそのまま名前で呼び出す方法(Callは省略できる)もあります。
Sub 全体処理()
データ読込
データ整形
End Sub
Sub データ読込()
' 読み込み処理
End Sub
Sub データ整形()
' 整形処理
End Sub
このように分けておくと、再利用やそれぞれの実行も可能になります。
応用:ボタンやメニューにまとめておく
- シートにボタンを用意して、必要なマクロだけ実行できるようにする
- リボンやショートカットに設定して使いやすくする
- メニュー形式のユーザーフォームと組み合わせることも可能
まとめ
マクロを効率的に管理するには、「1つのマクロにまとめる方法」と「役割ごとに分ける方法」の両方を知っておくことが大切です。
初めのうちは、1つのマクロに処理をまとめてコメントで区切る方法が理解しやすく、調整もしやすくなります。
一方、同じ処理を複数の場面で使うときには、サブプロシージャを用意してCall
で呼び出す構成も効果的です。
どちらが正解というよりも、「状況に応じて整理のしかたを選べること」が、マクロを使いこなすための大事な考え方です。
コメント