【Excel VBA】VBEでは「変数の宣言を強制」にする方法とした方がよい理由

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。
SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。
また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。
お気軽にお問い合わせください。
【Excel VBA】VBEで「変数の宣言を強制」にする方法
VBAをやり始めると、変数は宣言しなくても使えることに気づくと思います。まずは、『変数の宣言を強制』する設定方法をご紹介します。
VBAで「変数の宣言を強制」に設定する方法



これで設定は完了です。
Option Explicit が追加されるようにる
宣言を強制的にすると、Moduleなどの最初にOption Explicitが追加されるようになります。

Option Explicitが記述されている状態で、変数Aは「宣言⇒代入⇒メッセージボックスで表示」ですが、変数Bは「代入⇒メッセージボックスで表示」です。
Option Explicit
Sub testSengenAri()
Dim A As String
A = "あり"
MsgBox A
End Sub
Sub testSengenNashi()
B = "なし"
MsgBox B
End Sub
ちなみに、Option Explicitがない状態で実行しようとすると、次のように実行が出来ます。

Option Explicitで実行しようとすると、下のように宣言していな変数が青くなり、エラーメッセージが表示されるようになります。

『変数宣言を強制的する』を設定することで、変数の宣言し忘れを防ぐことができます。
ツールのオプションにある『変数の宣言を強制する』にチェックを入れいていても、モジュールの先頭にある『Option Explicit』を削除すると、宣言しなくても変数が使えるようになるので、間違って消さないように注意しましょう
変数は、なぜ、宣言する方がいいのか?
VBAでもそうですが、Pythonなどいくつかの言語は、変数を宣言しなくても使えるようになっています。じゃあ、なぜわざわざ変数は宣言した方がよいかの理由をいくつか考えてみましょう。
タイプミスの防止
変数名を入力するときに、タイプミスした時にすぐに気づけるようになります。
例えば、次のコードのような場合、強制宣言していないとタイプミスに気付くのは、計算結果が自分が思っている結果ではないことに気づいてからと、なってしまいます。
Option Explicit
Sub smaple()
Dim sumTotal As Double
sumToatl = 100
Dim Average As Double
Average = sutotal / 5
MsgBox Average
End Sub
実際、Option Explicit を消して実行してた結果です。

変数の宣言を強制していないと、どこが間違っているのか、コードを順番に見ていく必要があります。
では、Option Explicitがあればどうでしょうか。

「sumTotal」を「sumToatl」てタイプミスしていることが、すぐにわかりましたね!
『変数の宣言を強制する』に設定したことによって、予期せぬエラーやバグの原因となるタイプミスを防ぐことができます。
リソースの無駄遣い防止
VBAでは、明示的に宣言されていない変数は、VBAによって自動的に『Variant型』という、配列でもなんでも入る型として作成されます。Variant型は、他のデータ型よりメモリ消費量が多く、パフォーマンスに影響を与える可能性が増えてしまいます。
コードの可読性の向上
すべての変数が明示的に宣言されている場合、コードを読む人はどの変数がどのような目的で使用されているかを容易に理解することができます。
これにより、コードのメンテナンスが容易になり、チームでの開発効率も向上します。
VBAをするなら、変数宣言は必ずするようにしましょう!

稲垣
- Excel、ACCESSでのシステム開発が得意
- ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
- 自家焙煎するほどのコーヒー好き
- 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
- 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
- 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
- お客様にとって本当に良いことかを第一に考える人
コメント