わたしがマクロを作るとき、意識していることがあります。
それは、ユーザー定義関数をバンバン作って、処理をパーツ化していくこと
です。
プログラムが一発で問題なく動くことは基本的にはありません。何かしらのエラーを吐いてしまうものです。
マクロが非常に長くなると、どこでエラーが発生しているのか分からなくなるんですよね。
長いコードからエラー箇所を探し出すのは砂漠で砂粒を探すようなもので、
あれ、これって最初から書き直した方が早くね?
という元も子もないことになります。
ところがユーザー定義関数で処理を分けていれば、「ここまではエラーが起きていないから、ここから先のコードが悪さをしているな」と目星をつけることが出来るので、エラーの対処が楽になります。
ユーザー定義関数は、まさにドラゴンレーダー。
ドラゴンボールの位置を確認したらある程度の位置が分かるので、あとはその周辺を探していけばいいわけです。
しかも、汎用性が高いユーザー定義関数を作っておけば、別の処理を書くときには共通する部分はユーザー定義関数のコピペですむわけですから、あとは特有の処理を書くだけで済んでしまいます。
じゃあ早速ユーザー定義関数をバンバン作っていこうと思っても、大きな壁があります。
その壁とは、
処理を分けるのはすんげえめんどくさい
ということ。
汎用性が高いユーザー定義関数は、いかに一般的な処理に落とし込むかが大事になります。
使いやすいようにコードを組むために思考を巡らせるのは非常にめんどくさい。
これを乗り越えると、コードが資産化していき、マクロを組むことそのものが効率化されるという良い循環に入っていきます。