PR
スポンサーリンク

【VBA初心者】初心者こそoption explicitの設定

【VBA】初心者はまずこれから
スポンサーリンク

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で自動的に入るようにしておくと良い

コメント

タイトルとURLをコピーしました