変数の基本的なルール

スポンサーリンク

変数の宣言を強制する

各モジュールの先頭で、下のコードを記述することで、変数の宣言が強制となります。

 
VBAの設定で、変数の宣言を強制することもできます。

  1. 【ツール】→【オプション】
  2. 【編集】タブを選択
  3. 【変数の宣言を強制する】をチェック

この設定は1回するだけでOKです。
次からモジュールを新規作成した時、自動でOption Explicitが出力されます。

 

変数定義は型指定をする

変数を定義する場合は、dim strUserName as String のように型まで定義します。

型定義がないと、どんな値でもセットできてしまいます。

数値しかセットしない変数に間違って文字列をセットしたりなど、プログラミングのミスを防止する意味でも大事なポイントです。

 

できるだけせまい範囲で定義をする

基本的には、イベントやサブルーチン内で変数を定義してください。

必要なものだけをPrivateやPublicで定義します。

Public変数が便利だからと言って、なんでもPublic変数にすると、どこの処理で変数を使用しているかわからなくなります。

 

変数定義は使う直前でする

少し前までは、処理内で使う変数は先頭エリアでまとめて記述することが正とされていました。

しかし最近では、メンテ性の面などから変数を使う直前で定義することが多くなってきています。

 

変数にセルの値などをセットする時は型変換する

変数にセルの値そのままセットしても、暗黙の変換でうまく動くことが多いです。

ただ、本当は文字”001″として保存したいのに、0が暗黙の変換でなくなり”1″として保存されるなど、バグの原因になります。

そのため、型変換をして変数にセットしましょう。

型変換の例

 

変数の使いまわしはしない

繰返し用の変数や、ワーク用の変数を使いまわすと、プログラムの意図がわかりにくくなり、バグの原因になります。

処理ごとに、きちんと変数を定義しましょう。

NG例

変数idxを使いまわしている

 

OK例

処理それぞれで変数を定義している

 

Integer型は使わないでLong型を使う

これも少し前までは、メモリ節約するためにデータの大きさに応じて、Integer型とLong型を使い分けることが正とされていました。

しかし最近では、Integer型はLong型よりもパフォーマンスが劣るため、Long型を使うことが推奨されています。

 

変数の初期化を明示的に行う

Long型など数値の変数を定義した場合、初期値として0がセットされていますが、明示的に0をセットするなどして初期化を行いましょう。

 

小数点以下の計算では、Currency型を使う

小数のある計算でSingle型やDouble型を使うと、小数以下の計算結果で誤差が生じることがあります。

Currency型を使うことで、小数以下の計算結果の精度が向上します。

 

変更の可能性がある値は、定数を使う

消費税率など、今後変更が起こる可能性がある値は、ロジック(計算式)に直接記述しないで、定数として定義します。

もし計算式に直接0.08と記述していると、消費税率が変化した(0.08→0.15)時、各計算箇所すべてを修正しないといけません。

 
定数として定義していれば、定数の値を設定している場所1ヶ所のみを修正すればいいので、修正時間の短縮・修正漏れの防止になります。

 

目的が同じ定数は、列挙型で定義する※数値のみ

例えば、エクセルの列位置を定数で定義すると、次のようになります。

 
このままでも問題はないのですが、同じ目的・グループの定数は列挙型を使う事でプログラムの可読性・メンテナンス性が向上します。

列挙型による定義

名前の付け方は、一般的にe + 単語(先頭大文字)です。

数値を指定しないと、先頭から0の連番が自動でセットされますが、きちんと数値まで指定してわかりやすくしましょう。

自動入力補完機能(列挙形名.を入力すると入力候補が一覧表示される)が使えるので、早く・確実にプログラミングできます。

 

関連記事

VBAの開発ルール
VBAの開発ルール
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
エクセルVBAおすすめ本|実際に読んだ本を目的別に紹介
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
中途・未経験でプログラマーに転職する方法【30代前半までが勝負】
タイトルとURLをコピーしました