Option Explicit とは何?
VBAプログラムで使っている変数の明示忘れを防止する=不注意なエラーを防止する=とてもありがたいステートメントです。
しかも自動記述モードもあります。
こんにちは じゅんぱ店長 (@junpa33) です。
今回の話は、エクセルVBAコードの書き出しのところでの最初の疑問についてです。
エクセルVBAに取り組み始めてほぼ全員(?)の人が最初に思う疑問だと思います。
その名は「Option Explicit」
引継ぎした社内PCで、初めてビジュアルベーシックエディタ(VBE)を開いた時、いきなりこれが書いてあったという経験の人もいるでしょう。
「何だョ コレは、いきなりどういう意味?」と思ってしまいます。
「オプションの例外(Option Exception)ウンッ? ウン? 」
ねこ氏
PCの起動中で「例外の発生」は非常に嫌な状態 -ブルースクリーン- バイオスがシャットダウンするのかと思ってしまいます。
エクセルブックをパスワードロックするユーティリティなマクロ
別々に保存のシートを一つのブックにまとめる。シート移転マクロ
シート名一覧表作成マクロをブック登録して色んなエクセルで使う
Excel ユーザー定義用紙の印刷設定 問題解決のVBAコード
マクロの実行を1クリックで!フローティングボタンをユーザーフォームで作る
Option Explicitとは何、必要? VBA記述で不注意なエラーを防止する
Excelで書類のナンバリング刻印は瞬殺作業になる。紙ベースのユーザー必見
エクセル文書の見出し 先頭文字を大きく目立たせるVBA Characters
エクセルVBA セル入力の文字を大きくする、太くする、色変更の簡単コード
コンテンツ
Option Explicit とは何?VBA記述に必要?
例によって、Google翻訳で調べると「オプション明示」と出ました。これでは意味が分かりません。
何かを「明示しなさい」と言うことでしょうか。
答えを先に言いますが、
VBAプログラムの中で、『変数』を扱う時は、絶対に『変数をこれから使いますよ』と宣言(明示)しなければいけません。
と言うことを言っています。つまり、
Option Explicit が記述されているのに、変数の宣言をしないと、
こうなります。
では最初からOption Explicit を記述していなければ、
問題なくコードが実行されます。
ということです。
Option Explicit
Sub オプションエクスプリシットは嫌いだ()
Dim a As Long
a = 110
Range("B1") = a
End Sub
と記述します。
Option Explicit は必要ないでしょ!
と言うことは、Option Explicit を書かない方が、エラーストップもしないので、こっちの方が良さそうに思います。
それにいちいちアルファベットを打ち込むのも面倒だし。
ねこ氏
うささん
では何故、「Option Explicit は必要ないでしょ」ではなく、「Option Explicit を記述しましょう!必要です!」と推奨するのでしょうか?
ちょっとした例え話ですが、
あなたは、お友達と、お茶をしにお店に立ち寄りました。
あなたは手に持っていたスマホをテーブルに置いたまま、お友達との会話に盛りあがります。
ひとしきり盛り上がった後、お店を出るのですが、テーブルに置いたスマホを、そのまま忘れてしまいそうになりました。
それに気づいた店員さんが、「スマホを忘れていますよ」とあなたに注意を促してくれました。
あなたは、忘れ物をせずに済みました。忘れていたら、また大騒ぎになる所でした。
その店員さんの名前は、Option Explicitさんでした。
何故、Option Explicit を使うのか、それは、コードの中に潜むエラー、バグを防止したり減らしたりするためです。
実際にコードを組み上げていく時には、当たり前のようにして「変数」を複数個は使用することになります。
変数の宣言もせずに、複数個の変数を使用すると、それこそ『テーブルに置き忘れ』で「何用として使った変数か」や「同名の変数」を別目的で使ったりしてしまうでしょう。
変数にまつわるエラー、バグは、記述したプログラムコードを遡ったり、変数に代入された値が適正かどうかをその都度調べに行ったり、
結構、最悪系のエラー修正作業になっていしまいます。
みなさんは少しでもこんな作業をしたくはないので、
必ず、「Option Explicit」を使って、このプログラムで利用している、変数の明示忘れをしないようにしているのです。
Option Explicit は自動記述の初期設定で手間なし
Option Explicit は、モジュールの一番最初に記述しますが、
毎回毎回、記述していかなくても大丈夫です。
モジュールを立ち上げる(挿入する)度にVisual Basic Editorが自動で記述してくれます。
その方法は、Visual Basic Editorのオプション設定をしておくだけの事です。
Visual Basic Editorでツールからオプションへと進みます。
「変数の宣言を強制する」の項目にチェックを入れます。
OKボタンで完了です。
設定は楽勝です。
まとめ Option Explicit はエラー防止に必要です
<「Option Explicit」を書く、書かない どっち?>によって、
<変数を宣言する、宣言しない どっち?>とはならないと思ってください。
変数を宣言しなくて済むからOption Explicitは記述しないという考え方は論外でしょう。
自分でVBAコードを組み立てて行く上で、
「コードエラーを少しでも発生させたくない」から変数を宣言して明示するのは当然で、
その変数の宣言を忘れないように記述することをサポートしてくれるのが、
Option Explicitステートメントだということです。
「コードエラーを少しでも発生させたくない」と考えている人はOption Explicitを記述しましょうということです。
エクセルVBAの独習には動画学習という方法もあります。 目と耳両方を使って学習することでさらに勉強効率を上げることもできます。
エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。
今回の記事はここまでです。 最後までご覧いただき有難うございました。
アンケートでポイ活しよう!!
アンケートに答えれば答えるほど ”使える” ポイントがたまります。