Excel VBA > VBA:実務活用 > コーディングの前に知っておくと便利なこと
このエントリーをはてなブックマークに追加

コーディングの前に知っておくと便利なこと

可読性を上げるためのアレコレ

VBAに限らず、コーディングをする際には規約やルールがあったりしますが、経験的にExcelでの開発はまとまったドキュメントを作成していない企業も案外多かったりします。
そのため、開発(引き継ぎ)者は直接コードを見て判断せざるを得ないこともあります。

今回は、コーディングにおいて少し変わっているかもしれない点もありますが、弊社でコーディングする際のちょっとしたポイントをいくつかご紹介します。
結構、便利だったりしますので興味ある方はお試しください。

後で消すコードは「逆」インデントする

これはもともと下記画像のようにインデントを入れたコーディングをしていることが前提です。

ある開発を行っていて、「今だけ」、「一部だけ」処理がどうなっているのか知りたいことがよくあります。
そういう時は定番の「Debug.Print」、「ブレークポイント」や「Ifを絡めたSTOPステートメント」などを使って確認します。
逆インデントというのは下記の図の通りです。
アンバランスなので一目瞭然ですね。このように目立たせることで、この存在に気づきます。



この気づきが開発中には大いに役立ちますし、納品時の消し忘れにも有効です。

コメントを入れる

これはどこでも見かける当たり前のことですが、可読性を高める上では必須です。
ただし、明らかなコメントはむしろ不要ですね。

これは一概にも言えないところですが、例えばコメントとしては下記のような内容のほうが処理の具体的イメージが近づくと思います。

また、長いプロシージャになると、ブロック全体が1画面に収まらないことがあります。
そこでそういう場合は下記のようにすると少しは役に立ちます(これは、CMSでHTML出力するパターン(start…、 end …)によくあるように思います)。
長いループで、かつネストしている場合などでは、末尾に来ると「何のループだったけ」みたいなことがあるときに有効です。

一時利用の変数の定義場所を意図的に変える

通常プロシージャ内で定義する変数は先頭部分にまとめます。
ただし、長いプロシージャになると、上記の点同様に1画面に収まりきらないことでスクロールが必要な場合も出てきます。
そこで下記のようにしています。

画像だけだとわかりにくいですが、プロシージャの全体が長いため、使いたい変数を使用する直前に定義しています。(変数の名前を意識して付けておけば、わざわざ宣言部分まで振り返らなくてもよい場合もありますが、、)
上記の場合、イレギュラーな位置なので混乱しないよう「一時的に使用する変数(使い捨て)」に限ったほうが良いです。
なお、このような定義の仕方は、実はコーディング前のレビューが甘いことが原因でもあります。
いわゆる「その場しのぎ」だったりすることもあります。やりすぎると余計混乱しかねないので気を付けてください。私も気を付けます。

Callを使ってプロシージャを呼び出す

これは好みの問題もあるかと思いますが、他のプロシージャを呼び出すときにCallステートメントを意識的に使うと良いと思います。
というのは、Callなしで使われているコードは、(VBAに慣れてないと)「このコードは何かのメソッドやプロパティかなぁ」などとなってしまうことがあるからです。
Callをしておけば、「他のプロシージャが呼ばれた」と判断がしやすくなります。

可読性を高めるためには意識する範囲を限定する

経験的に、コード内容の可読性を上げるためには、関係ないところは意識しないような作りにすることだと思っています。
例えば、プロシージャレベルで変数を宣言するのと、モジュールレベルで変数を宣言するのとでは、変数のスコープが異なり、後者のほうが(変数を扱える)幅が広くなり、(どこで値の取得・設定をしているのか等)意識しないといけない点が増えます。
これはコードの可読性を下げます。

カテゴリ:VBA:実務活用