VBA覚え書きです。
何回か前に初心者がしておくことをおすすめするVBEの設定について紹介し、そこで変数の宣言を強制する設定が特に大切と書き残しました。
今回はその理由や意味についてまとめていきます。
スポンサーリンク
Option Explicitで変数の宣言をする、しないの議論
変数の宣言について、VBAを取り上げている記事や雑誌では
必ずしなければならないと言っている人もいればする必要がない、
むしろしないほうがいいという人もいてたびたび議論になっています。
これという正解は無いのでVBAを使う目的や用途次第になってくると思うのですが、
私は先生から「”絶対に”してください」と教わっているので毎回するようにしてます。
(未だによく忘れてプログラムに怒られてますが笑)
その理由を忘れないように書き留めたいと思います。
変数の宣言をしないといけない理由は主に2つ
変数の宣言を強制しないといけない理由は、変数の宣言をしないと大変まずいことになってしまう可能性があるからです。
先生も記事も雑誌でも、変数の宣言をすべきと考える理由は主に次の2つ、
もしくはどちらかを挙げています。
理由1:後から見た人がどんな変数を何に使っているかわかりやすい
変数を宣言しなくても自動的に何でも格納できるVariant型が割り当てられることは前回説明しました。
そのため消費メモリに気を付けていれば宣言をしていないことが原因でエラーが起きることはありませんが、
作成したプログラムのソースを見るのは作成者だけとは限りません。
後から他の人がメンテナンスや機能の追加で見る可能性もあります。
そんな時に前触れもなく突然いろんな変数が出てきたら混乱してしまうかもしれません。
簡単なプログラム内で「i」や「k」が変数として出てきたらわかりやすいですが、
作成者にしかわからないオリジナル変数名や紛らわしい変数が出てきたら先々でエラーが発生する原因になってしまう可能性もあります。
そこで「変数●●は××型として使います」と変数を宣言することで誰が見てもわかりやすいプログラムになるというのが1つ目の理由です。
こちらはどちらかといえば変数を宣言したほうがいい理由になります。
しないと大変まずいことになってしまう可能性があるのは次です。
理由2:エラーが起きていることにすら気付けない事態を防ぐ
変数を宣言しなくても自動的に何でも格納できるVariant型が割り当てられることに理由1でも少し触れていますが、
何でも格納できるという便利さが裏目に出てしまうことがあります。
例えば、次のようなプログラムを作成したとします。
Public Sub test()
hensuu1 = 1
Hensuu2 = 2
Cells(1, 1) = hensuu1 + hensu2
End Sub
hensuu1に1を、hensuu2という変数に2を格納して足した結果をセル(1,1)に出力します。
合っていたら1+2で3になるはずです。
しかしプログラムをよく見ると足し算の式でタイプミスをしてしまい、2を格納したhensuu2ではなくhensu2となっています。
このミスに気付かずに実行してしまいます。
すると、タイプミスがあったのでエラーが発生すると思いきや何も起きません。結果も3ではなく1になっています。
変数の宣言を強制していれば、プログラムを実行した時にhensu2という変数が宣言されていないことにコンピュータが気付いてエラーメッセージで教えてくれます。
しかし、宣言しなかったことで自動的に変数hensu2が誕生し、Variant型が割り当てられてしまったのです。
そしてhensu2には何も格納されていないので1+0で1となってしまいました…
エラーが発生したら原因を特定して修正をかければ解決しますが、気付けないということが大変危険です。
例えば大規模な会社の売り上げ管理プログラム等で今回のようなミスを見落としたまま運用を続けてしまうと
最後に合わなくなってしまい正確な計上が出来なくなってしまったり、信用に関わる大きなトラブルに繋がってしまうこともあります。
大げさな例ですが初期の小さな穴を見落としてしまうことで将来的に取り返しのつかないことになってしまう可能性もあります。
と言われてビビったので必ず変数の宣言をするようにしています。
スポンサーリンク
最後に
今回は「Option Explicit」で変数の宣言を強制する意味やしたほうがいい理由など、実際に教わったことを交えて説明しました。
強制したほうがいい理由というよりは宣言したほうがいい理由になりますね。
最初のほうはプログラムを動かそうとするたびにエラーメッセージが出てきてストレスになることもあるかもしませんが、思わぬミスを未然に防げるので初心者こそ設定しておくことをおすすめします。
ありがとうございました。