通常mainプロシージャが仕事の単位で、A、B、Cプロシージャなどは仕事の流れのそれぞれの処理を行う。各処理はプロシージャ単位だが、呼び出したプロシージャの処理を終えると必ず呼び出し元に戻るという仕組みがある。そのためmainのプロシージャで全体の流れを見ることができる。

個々のプロシージャは、スクロールしなくていいい程度の行数にすると読みやすい。また、一つのプロシージャに多くの機能を含めず、小さなプロシージャを組み合わせることで大きな仕事ができるように作る。例えば、データと処理と書式の設定は別のプロシージャにする。
次図は、4つのプロシージャを作り、mainプロシージャからsub1、sub2を呼び出し、sub2からsub3を呼び出している。mainプロシージャを実行すると、イミディエイトにsub1、sub2、sub3の順に出力される。

次図は、標準モジュールに上の図のコードを書いて実行した例。F8で一行一行実行順序を確認する。

必ず呼び出し元に戻るのが「構造化プログラミング」の手法です。以下の効果がある。
- mainで全体の処理の流れがわかる。
- コードを書く時は、各プロシージャの処理に集中できる
- 処理の分解や処理順番の変更がしやすい。
また、If文などの制御文も構造化の手法になる。構造化=メンテナンス性アップだ。
なお、私はSubプロシージャの「main」という名前は、Excelのファイルの中の全マクロを実行させるためのプロシージャと決めている。こうすることでExcelファイルごとに全体を実行するためのマクロ名を探す必要が無くなる。

「困難は分割する」、「簡単な例に置き換える」