VBEのメニューバーの[ツール]-[オプション]で表示されるダイアログボックスで、標準設定だと変数の宣言は強制されていないが、以下の画像の赤枠のように、強制することをお勧めする。


VBE_Option


「いちいち変数を宣言するなんて面倒」と思う方もいらっしゃるだろう。ごく短い処理であればそれでも済む場合もあるが、それでも変数の宣言を、それも適切な型での宣言をさせた方がよい、と思う。


思いつく理由としては

・使っていない値に設定してしまう危険性がある

・型を間違ってしまう危険性がある
がある。


※以下のサンプルコードはまたしても実行していないので、おかしな場合はご連絡を。


【使っていない値に設定してしまう危険性がある】

例えば次のようなコードがあったとする。


Sub aaa_0()


  'AとBの加算結果を表示する


  A = 1

  B = 2


  C = A + B


  MsgBox D


End Sub


上記プログラムでは何が表示されるだろうか?実際はこれほど単純なミスも希であろうが、例なのでご了承頂くとして、コメントに入れたとおりの結果は得られない。

このときに、A、B、C を宣言しておけば、間違えてDを使ったとしてもエラーが出るので防止することができる。


Sub aaa_1()


'次の3行を追加

  Dim A As Integer

  Dim B As Integer

  Dim C As Integer


  'AとBの加算結果を表示する

  A = 1

  B = 2

  C = A + B

  MsgBox D   '←宣言されていないのでエラーが発生する

End Sub


【型を間違ってしまう危険性がある】

例えば次のようなコードがあったとする。

Sub bbb_0()

  'AとBの加算結果を表示する

  A = 1

  B = 2

  C = "A"

  D = A + C

  MsgBox D

End Sub

変数を定義していないと変数は Variant型になる。Aの内容は数字の1、Cの内容はアルファベットのAなので、一見足し算なんぞできないように思えるが、+ は文字列の結合をする演算子でもあるのだ。よって、「文字同士の結合」だと勝手に解釈されてしまう。


Sub bbb_1()


'次の4行を追加

  Dim A As Integer

  Dim B As Integer

  Dim C As String

  Dim D As Integer

  'AとBの加算結果を表示する

  A = 1

  B = 2

  C = "A"

  D = A + C  '←演算結果が数字ではないのでエラーが発生する

  MsgBox D

End Sub


【まとめ】
上記のように、変数の宣言はミスを防いでくれるのだ。多くのコンピュータ言語は「変数の宣言は当たり前」であり、また「Variantのような何でも屋の型はまずない」のである。(詳しい方へ:プリミティブな型、とご理解願います)

型を正しく宣言しないと、宣言したソフトウェアよりもテスト工数が多くなり、製造に余計なコストがかかる、ということにもなるのである。たとえ短いプログラムであったとしても、かならず「正しい型を宣言する」ようにすることをお勧めする。