VBAでプログラミングをするときの、自分なりのルールを整理しています。
最後に今までに分類できないその他の内容となります。
その他
マジックナンバーは使わない
プログラムにおけるマジックナンバー(英: magic number、魔法の数字)とは、何らかの識別子もしくは定数として用いられる、プログラムのソースコード中に書かれた具体的な数値である。そのプログラムを書いた時点では製作者は数値の意図を把握しているが、他のプログラマーまたは製作者本人がマジックナンバーの意図を忘れたときに閲覧すると「この数字の意味はわからないが、とにかくプログラムは正しく動く。まるで魔法の数字だ」という皮肉を含む。
マジックナンバーになりやすいポイントとして以下のものがあるようです。
定数や列挙型を使うことで、マジックナンバーを避けるべきとされています。
- 行数、列数
- 係数
- セルのアドレス
- 配列やオブジェクトの要素数
- 引数
- ファイル名、パス名
- パスワード
- URLやメールアドレス
テーブルの走査
テーブルの走査にはDo While~Loopなんか使いません。そんなことしたら、行列の指定にマジックナンバーを使うことになるか、マジックナンバーを使わないようにすることに労力を使ってしまいます。
ワークシート上で必ずテーブル定義を行い、ListObjects, ListColumns, ListRowsなどを使うべきなのです。
コレクションの走査
コレクションの走査にはFor Each~Next文を使います。
コレクションのCountプロパティを使えば、For~Next文でも対応はできますが、For Each~Next文のほうがループ内でのオブジェクトの指定が簡潔になります。
ワークシートの指定
シートの指定はできる限りオブジェクト名を使う、という考えがあり、
- どのモジュールからでも同名でアクセスできる
- 可読性が確保できる
- シート名の変更の影響を受けない
- 宣言が不要
などのメリットがある、とされています。
が、ユーザーが決めるシート名を判断して…などの場面もあると思うので、こだわらなくて良いと思います。
ワークブックを明示する
ワークブックを明示しないと、違うブックに操作しようとして思わぬ結果になったり、エラーが発生したりします。
Thisworkbook を使うか、開いたばかりのブックはオブジェクト変数に Set して使用するべきです。