こんにちは!ぐーです。
いつもブログをご覧いただき、ありがとうございます!
皆さんのエクセル画面、マクロのボタンだらけになっていませんか?
「まず『データクリア』ボタンを押して、次に『取り込み』ボタン、最後に『印刷』ボタンを押す…あ、順番間違えた!」なんてミス、よく見聞きしませんか?
実はこれ、たった3行の「司令塔マクロ」を作るだけで解決できるんです。
この記事は、「データの取り込み」「集計」「PDF化」など、複数のマクロボタンを順番にクリックして回るのが面倒くさい!という悩みを解決します。
プログラミングの「部品化」という考え方にもつながる、とても大切なテクニックになります。
それではいきましょう!
なぜ「司令塔(制御用Sub)」が必要なの?
一つの長いマクロに全部書いても動きますが、修正が大変です。
「印刷部分だけ直したいのに、全部見直さなきゃ…」となってしまいます。
だから、処理ごとに小さなマクロ(部品)を作って、最後にそれをまとめる「司令塔」を作ります。
一括実行を可能にする「Call」
使い方は超シンプル。Call マクロ名 と書くだけです。
例えば、以下の3つの作業を自動化したいとします。
- 掃除する (Sub CleanData)
- 計算する (Sub CalculateData)
- 報告する (Sub ReportData)
これをまとめる「司令塔」はこうなります。コピペして使ってみてください。
' これが司令塔(制御用Sub)です
Sub MainController()
' 画面の更新を止めて高速化
Application.ScreenUpdating = False
' 1. 掃除マクロを呼び出す
Call CleanData
' 2. 計算マクロを呼び出す
Call CalculateData
' 3. 報告マクロを呼び出す
Call ReportData
' 画面の更新を再開
Application.ScreenUpdating = True
MsgBox "すべての処理が完了しました!"
End Sub
' --- 以下は呼び出される部品たち(テスト用) ---
Sub CleanData()
' ここにデータクリアの処理が入ります
Debug.Print "1. 掃除完了"
End Sub
Sub CalculateData()
' ここに計算処理が入ります
Debug.Print "2. 計算完了"
End Sub
Sub ReportData()
' ここに報告処理が入ります
Debug.Print "3. 報告完了"
End Sub
ポイント
- 順番が命: Callを書いた順番通りに実行されます。
- 読みやすさ: MainController を見るだけで「何をする業務なのか」が一目瞭然になります。
これでボタンは1つでOK。押し忘れも順番間違いもゼロになります。
ぜひ、「司令塔」を作ってみてください。
VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。
リンク
リンク

コメント