VBEのメニューバーの[ツール]-[オプション]で表示されるダイアログボックスで、標準設定だと変数の宣言は強制されていないが、以下の画像の赤枠のように、強制することをお勧めする。
「いちいち変数を宣言するなんて面倒」と思う方もいらっしゃるだろう。ごく短い処理であればそれでも済む場合もあるが、それでも変数の宣言を、それも適切な型での宣言をさせた方がよい、と思う。
思いつく理由としては
・使っていない値に設定してしまう危険性がある
・型を間違ってしまう危険性がある
がある。
※以下のサンプルコードはまたしても実行していないので、おかしな場合はご連絡を。
【使っていない値に設定してしまう危険性がある】
例えば次のようなコードがあったとする。
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のような何でも屋の型はまずない」のである。(詳しい方へ:プリミティブな型、とご理解願います)
型を正しく宣言しないと、宣言したソフトウェアよりもテスト工数が多くなり、製造に余計なコストがかかる、ということにもなるのである。たとえ短いプログラムであったとしても、かならず「正しい型を宣言する」ようにすることをお勧めする。