【Excel VBA】If Elseとは違う条件式(Select Case)について
エンジニアのIMMRです。Excel VBAの条件式には、以前に説明したExcel VBA 条件式(If Else)とこれから説明するSelect Caseの二つあります。1.従来のIf Else条件式If Elseは条件に合った時は処理Aを、条件に合わなかったら処理Bを実行します。では、下記のようなデータがあり、複数の条件があるとします。If Elseを使用して作成すると2種類の方法が浮かぶと思
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
皆さん、こんにちは エンジニアのIMMRです。
例えば、下記のようなサンプルブックがあったとします。
図1 サンプルブック
これは、セル「A2」に金額(数値)を入力して、プログラムを実行すると2割引き価格がメッセージボックスにて表示されるものです。
プログラムは以下の通りです。
図2 プログラム1
変数の宣言はなくても実行は出来るため、下記のようにすることも可能です。そのため下記のプログラムでも問題ないです。
図3 プログラム2
セル「A2」の箇所に”1000”という数値を入れて実行してみます。
プログラム1とプログラム2の実行結果は、下記のようになります。
図4 プログラム実行結果1
1000の8割がメッセージボックスで800が表示されるので正しいですよね。
では下記のプログラムはどうでしょう?
図5 プログラム3
先ほどと同様にセル「A2」の箇所に”1000”という数値を入れて実行してみます。
プログラム3の実行結果は、下記のようになります。
図6 プログラム実行結果2
このように何も表示されない結果となります。
図3 プログラム2と図5 プログラム3は
同じように見えますがなんで?と思うかもしれないです。
実は、2つめのプログラムのPrice80の箇所を確認すると
Price80 = Price * 0.8 → Price80(ハチ ゼロ[数字])
MsgBox Price8O → Price8O(ハチ オー[アルファベット])
と名前が異なるからです。
Price80(ハチ ゼロ[数字])に値を格納しているのに
メッセージボックスでは何も格納していないPrice8O(ハチ オー[アルファベット])を表示しています。
そのため、メッセージボックスでは、ブランクが表示されてしまいます。
図5 プログラム3でのPrice80とPrice8Oでは
似ているので見間違えることもありますよね。
言われて良~く見ると異なっているのがわかりますが、言われなかったら気づかないと思います。 ※私も見逃すと思います。・・・
このように変数の宣言を必須にしないと思わぬ結果が出力されて、
確認作業が増えてしまいます。
変数の宣言を必須にすると今回のような記載ミスを気付くことができます。
そのためにも変数を宣言を必須にしたほうがよいのです。
変数の宣言を必須にする方法は下記の流れでおこないます。
①「ツール」→「オプション」を選択する。
図7 設定操作1
②「編集」→「変数の宣言を強制する」にチエックを入れる。
③「OK」を押下する。
図8 設定操作2
これで宣言の必須の設定完了です。
これにより、「Option Explicit」という文章がプログラムの上に記載されます。
図5のプログラム3に 変数の宣言文をいくつか追加したものが下記になります。
図8 プログラム3ー2
それでは、上記プログラムを実行してみます。
図9 プログラム3ー2実行結果
エラーの起きたメッセージボックスの変数「Price8O」は変数の定義が出来ていないということは
変数で宣言した「Price80」と異なるものであることがわかります。
変数宣言が出来ていないことでエラーメッセージを表示されるのです。
これにより、変数の宣言を必須にすることができました。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート