これまでIfステートメントとSelect Caseステートメントについて、それぞれ解説してきました。
しかし、それぞれ条件分岐のステートメントでコードの記述の仕方以外に明確にどのように使い分けを行なうべきか、最初のうちは結構悩ましいですね。
そこで、今回はIfステートメントとSelect~Caseステートメントの使い分けを行なうための基準をまとめていきます。
Ifステートメントのメリットとデメリット
条件分岐イメージ
条件1~3はそれぞれ「○が△の場合」というような分岐の条件をそれぞれ設定します。
それぞれ順番に条件に合致したかどうかで処理が分岐されていくイメージとなりますね。
ちなみに条件分岐がネストしたい場合に「ElseIf」や「Else」などで区切りを入れておかないといけません。(詳細は参考ページをご参照ください)
メリット
- 1つあたりの条件式で複数の判断条件の対象を設定できる(And演算子やOr演算子などの論理演算子と組み合わせ)
- 複数の条件式で複数の判断条件の対象を設定できる
デメリット
- 1つの判断対象に対して複数の条件を設定したい場合、コードが冗長化してしまう(見にくい)
- とびとびの値や範囲を条件に設定したい場合にコードが長くなる可能性が高い
参考ページ
【Excel VBA】If~ThenステートメントはVBAの中のIF関数的存在 | Excelを制する者は人生を制す ~No Excel No Life~
【Excel VBA】If~Then~Elseステートメントで1つの条件を満たした場合と満たさない場合の処理をそれぞれ設定する方法 | Excelを制する者は人生を制す ~No Excel No Life~
【Excel VBA】If~Then~ElseIfステートメントで複数条件を処理を分岐させる方法 | Excelを制する者は人生を制す ~No Excel No Life~
Select Caseステートメントのメリットとデメリット
条件分岐イメージ
先ほどのIfステートメントでは、条件は「○が△の場合」のように設定しましたが、Select Caseステートメントでは「○」の部分は「条件判断の対象」ということで1つ設定しておくことになります。
条件1~3はそれぞれ「○が△の場合」の「△」の部分のみをそれぞれ設定します。
あとはIfステートメントと同様に、それぞれ順番に条件に合致したかどうかで処理が分岐されていくイメージとなりますね。
メリット
- 1つの判断対象に対して複数の条件を設定したい場合、コードが見やすい
- とびとびの値や範囲を条件に設定したい場合に楽チン
デメリット
- 判断条件の対象が複数あると対応できない
参考ページ
【Excel VBA】Select~Caseステートメントで1つの対象に対して複数条件で処理を分岐させる方法 | Excelを制する者は人生を制す ~No Excel No Life~
まとめ
ポイントは条件式をどのように組みたいかで使い分けを行なうことが妥当ですね。
条件式が「○が△の場合」として表すと、「○」の条件判断の対象(セルやシートやブックなどのオブジェクト)が複数に分かれる場合はIfステートメント、分かれなければSelect Caseステートメントを使うというのが良いでしょう。
ただし、VBAに慣れないうちは取り急ぎIfステートメントだけ覚えてしまえばすべてカバーできるので、慣れてきたら使い分けを意識するくらいで問題ないですね。