VBAでプログラミングをするときの、自分なりのルールを整理しています。
引き続き、変数に関するコーディングラインです。
変数の宣言
変数の宣言を強制する
別のページに記載していますが、変数の宣言は強制すべきです。
宣言を強制することで、エラーを防止し、デバッグがやりやすくなるはず。
- 変数名のスペルミスによるエラーや暴走の防止
- 変数の型を明確にすることによるエラーの防止
暗黙の型は使わない
型指定をしないとVariant型になりますが、変数の役割が見えづらくなりますので、特に理由がない限りは型を指定をすべきです。
あまり影響はないかもしれませんが、LongのつもりでもVariantにしてしまうと、メモリを食うとか速度がおちると言う人もいます。
スコープはできる限り小さく
原則、変数・定数はプロシージャレベルで宣言をすることで、可読性と安全性が高まります。理由もなくモジュールレベルやパブリックにすると、経験上、エラーの元となり、デバッグも難しくなりがちです。
宣言をするのは、「使用する直前での宣言」「プロシージャ冒頭にプロシージャ内で使用するすべての変数を宣言する」という2通りの考え方がありますが、正直どっちでもいいです。私は後者の方が多いですが、前者の場合もあります。
Integer型は使わない
整数はLong型で統一で問題ないとのこと。
公式でこのように書かれているらしいです。
しかし、最近のバージョンでは、Integer型として宣言されていても、VBAはすべての整数値をLong型に変換します。したがって、Integer変数を使用することによるパフォーマンス上の利点はなくなりました。実際、Long変数はVBAで変換する必要がないため、少し速くなる可能性があります。
つかう数字の範囲を考えて、Integer か Long か、悩む必要がなくなりいいですね。