Option explicitとは変数の宣言を強制する設定です。バグを防止するためには断然、これをおすすめします。
VBEの標準では宣言をしなくても動くようになっています。何でも入るobject型で受け止めてくれることで、変数の型の違いによるエラーを回避してくれます。
しかしなまじ動いてくれるばかりに、却って深刻な(見つけにくい)バグに繋がります。
Option explicitとは変数の宣言を強制する設定
Option explicitなしのソースコード
下記のコードを実行してみます。変数を宣言し、0を代入するコードです。
Sub test()
Dim hensu As Integer
hensuu = 0
MsgBox (hensu)
End Sub
問題なく動きます。
Option explicitありのソースコード
先頭にOption explicitを追加して実行してみます。
Option Explicit
Sub test()
Dim hensu As Integer
hensuu = 0
MsgBox (hensu)
End Sub
エラーになりました。しかし開発段階で遭遇するエラーはバグではありません。(ここ重要)
なぜOption explicitを宣言するのがおすすめなのか
下記のコードを実行するとどうなるでしょうか。変数に100を代入します。
Sub test()
Dim hensu As Integer
hensuu = 100
MsgBox (hensu)
End Sub
エラーにはなりません。しかし答えが間違っています。
よく見ると、スペルミスで最初の変数と最後の変数の名前が異なっています。そのため数字が代入された変数は使用されず、空の変数が呼び出されたからです。
今回のような3行のコードならまだしも複雑なコードでこれをやってしまうと、なまじ動くだけに発見に苦労することになります。
こうであるべきでした。hensuです。
Option Explicit
Sub test()
Dim hensu As Integer
hensu = 0
MsgBox (hensu)
End Sub
【脱初心者】Option explicitが自動で宣言される設定にする
この設定がおすすめです。
このチェックを入れてエクセルを再起動すれば、今後は自動でOption explicitが入ります。
これで入れ忘れることもありません。
まとめ
- Option explicitとは変数の宣言を強制する設定
- Option explicitにしていると変数名のスペルミスを発見することができる
- いれ忘れ防止のためVBEで自動的に入るようにしておくと良い
コメント