VBA開発

VBAマクロでリファクタリングする理由(初級者向け)

リファクタリングとは

VBAマクロをユーザーが実行した際の動作は変更せずに、開発者が理解や修正をしやすくする為に、ソースコードの内部構造を整理することです。
わかりやすくいうと「機能はそのままでコードを、よりわかりやすい形に書き換えること」です。

VBAはExcelやAccessなどで利用できるプログラミング言語の為、お手軽にプログラムを実行する事が出来ます。これは、間口を広げてVBAを触れる人を増えると、開発者にしかわからないプログラムが多いのも事実です。

以下のようなお問い合わせ頂くケースも多いです。

  • 前任のマクロ開発者が退職し、今までは使えていたが急に使えなくなった。
  • 自作したマクロで運用しており、仕様変更したいがどのように修正したら良いかわからない。
  • クラウドソーシングでお願いした方と連絡が取れなくなり、システムの拡張ができない。

リファクタリングのメリット

  • コード内容を理解しやすくする
    自分だけが理解できるコードになっていて他人が見た時に可読性がない。また、自分が書いたコードなのに1年後に見直した時に意図が読み取れない。等よく聞くパターンです。
    VBAマクロはお手軽にスタート出来るため、上記のような経験がある製作者は多いはずです。リファクタリングを行うことで、自分も含めた将来の開発者の助けになります。
  • 不具合(バグ)を発見する
    デバッグのデバッグをする形になりコードを再度読むことで、自分自身の理解が進みます。その際、潜在バグを発見したり、コードをまとめることでコードの正確性も上がります。
  • 拡張性を広げる
    時代が移り変わると、システムは陳腐化していきます。業務であれば事業の拡張等、当初想定していなかった動きを求められるケースがあります。拡張性の高いコードを書くことで今後のメンテナンスも容易です。

リファクタリングの方法

VBAを書いているだけの初級者は絶対に「リファクタリング」という言葉は知りません。
※プログラマにとっては当たり前ではあります。

VBAの専門書籍では、ほとんど「リファクタリング」は出てきません。
小さなシステムでとりあえず動けばいいという形であればする必要がないからです。

これは門戸の広さ故のVBAマクロだからこそかもしれません。
初級者だからこそリファクタリング作業を行い、メンテナンスしやすいコードを作成すべきです。

  • メインの処理とサブの処理は細かく分ける
    初級者がよくありがちなのでメインのモジュール一つだけでとてつもなく長いコードが書いてあるケース。
    見にくいし修正しづらいので、モジュールは分けましょう。
  • 同じ処理はモジュール化する
    上述と同様ですが、一つのモジュールで書いてあると同じ処理が複数個所に出てくる場合があります。
    この場合、一つ修正したくても全てのコードを見直す必要性が出てきます。
  • エクセルのシートとVBAの処理内容は混在しない
    変数内で計算処理を持たせればいいものの、エクセルのシートに書き出す方がおられます。
    マクロの処理が遅くなりますし、意味がないので変数内で処理するべきです。
  • 変数名は日本語ではなく、ローマ字にする
    日本語だと都度IMEの切替をしないといけません。また検索したい時にコメントにも変数にも引っかかる形になると手間菜だけです。
  • シートや列や行を参照する場合は定数化しておく
    エクセルなのである程度ユーザーが自由に触れます。自由に触れることでマクロがうまく動かなくなるケースがあります。事前に定数化することによって被害を最小限に食い止められます。

 

コメント

タイトルとURLをコピーしました