Select Case 文とIF文って、いったいどのように使い分ければいいのかわからない方も多いのでは、ないでしょうか?
文法的には、全くことなるものの、どちらを使って、プログラムを記述使えばよいかわからないものです。
Excel-VBAを利用して、だんだんその利用方法がわかっていくるかとは思いますが、意外と経験者でもこの違いや区別について考える方も少ないんです。
[balloon_left img="https://tarmiyan.net/wp-content/uploads/2020/01/user-1.jpg" caption="ユーザー"]・Select Case文とIf文って、何が違うんだろう?
・どちらで記述しても同じなんじゃないないの?[/balloon_left]
そんなふうに感じたこともあるかと思います。そこで今回は、この2つの違いについて徹底的に解説していこうと思います。
Select Case文とIf文ってどっちを使うべき?
まずこのSelect Case文とIf文って、どっちを使って、プログラムを作った方がいいのか?その答えから解説していきましょう。
[balloon_right img="https://tarmiyan.net/wp-content/uploads/2020/01/tarmiyan.png" caption="管理者"]その答えは、⇒⇒⇒⇒ 自由です。[/balloon_right]
プログラミングを作るのは、作り手の自由です。
ただこの2つの構文は、どちらも条件分岐の処理に使用していますので、使い方が非常に似ています。
どちらでも記述することが可能ですので、どちらで記述しても問題はありません。
2つの違いを見出すのであれば、「プログラムの見やすさ」で使い分けを行っていくことがよいでしょう。
なので、どちらを使うべきかというと、どちらを使用しても構いません。
が、答えになります。
Select Case文とIf文の違いについて
それでは、この「Select Case文」と「If文」には、どんな違いがあるのでしょうか?
その違いについて詳しくみていきましょう!
Select Case 文の場合
まずSelect Case文の特徴は、主に下記が挙げられます。
<Select Case文の特徴>
- 縦方向にプログラムが記述される
- ソースが縦に長くなる
■【Select Case文の事例】
このように、Select Case文は、縦に長くなるので、どこで処理が分岐されているかが見やすくなります。
但し、Select Case文の中に更にSelect Case文を記述すると、縦方向にどんどん記述が長くなるため、それもまた見えにくくなってしまうんです。
If文の場合
続いて、If文には、主に下記の特徴が挙げられます。
<If文の特徴>
- 横方向に細かく分岐処理が作れる
- 複数の分岐処理がある場合Select Case文より見やすくなる
このように、Select Case文の場合には、条件分岐処理を縦にどんどん記述することになるため、分岐ロジックが多数になると処理が非常に長くなり醜くなる傾向があります。
これに対して、IF文は、横向きに細かな分岐ロジックを作ることが可能です。
■【If文の事例】
但し、横に書きすぎても、今度は横スクロールしなくていけなくなるため、見えにくくなってしまうことがあります。
Select Case文の中にIf文を使う時の2つのポイント
If文だけのプログラミングをみると、どこに何が書かれているのかロジックを負うことが非常に見えにくくなり、確認がしづらくなります。
そこで、プログラムを見やすくするためには下記2つに注意して作成してみましょう!
<Select Case文/If文の2つのポイント>
- Select Case文とIf文の2つを併用する
- Select Case文の中にIf文をつくると見やすい
Select Case文とIf文の2つを併用する
またSelect Case文だけで記載すると、縦に長くなるため、条件分岐の処理が増えると、縦スクロールが増えるので、プログラムが非常に見えにくくなるのです。
なので、Select Case文の中にIf文を利用する際に大切なことが、この2つを併用することが「見やすいプログラミング」になるポイントになります。
Select Case文の中にIf文を作ると見やすい
特に見やすいプログラミングを行う際におすすめのポイントが、Select Case文の中にIf文で条件分岐を作ることです。
下記をご覧ください。
■Select Case文とIf文の混合事例
このように、Select Case文の中にIf文を混合して利用することで、縦横両方にプログラムが流れていることがおわかりになりますか?
こうすることで、画面全体でプログラムを表示することができるので、スクロールの必要性がなくなるのです。
非常に見やすいプログラムソースを作れるように、なるべくどんな時にIf文を使い、どんな時にSelect Case文を使うのか、自分の中でも決めておくと非常にいいかと思います。
同じ記述ばかりしているとプログラムが見にくい
If文ばかりをズラズラ並べてしまうと非常に見にくい、プログラムになってしまいます。
その辺は、Select Case文やIf文を上手に活用しながら、縦横に上手に流れるように、プログラムを作成していきましょう。
2つの使い分け方について
同じ条件で複数の文字や数字の場合分けがある場合には、Select Case文を使用しています。
これに対して、If文は、様々な異なる条件で、条件分岐が発生する場合多いです。この場合、If文を活用するとよいでしょう。
[balloon_left img="https://tarmiyan.net/wp-content/uploads/2020/01/user-1.jpg" caption="ユーザー"]んんん?どういうこと?[/balloon_left]
ちょっと難しいですよね。それでは、図解解説しておきましょうね。
Select Case文はこんな時に使おう!
下記のデータをご覧ください。
上記のようなデータを例にとると、
A列のみの条件で、1の場合、2の場合、3の場合という1列の条件分岐で使用する場合に、Select Case文を利用すると見やすくなります。
IF文はこんな時に使おう!
逆に、条件分岐がA列、B列、C列等の複数の列の全く異なる条件分岐が必要になる場合には、If文で階層分けしながら、条件を小分けにしていくと記述がしやすくなります。
下記のようにIf文を記述するイメージを持ちましょう。
Select Case文とIf文の処理速度も異なる
Select Case文とIf文の処理速度は、どのように違うのでしょうか?
気になる方もいるかとは思いますが、こちらに関しては、下記サイトにて解説しておりますので、気になる方は、ご確認下さいね。
➡【Excel-VBA】Select Case文とIf文の処理速度!速いのはどっち?【Excel-VBA】Select Case文とIf文の処理速度!速いのはどっち?
まとめ
このように、Select Case文とIf文の違いは、大きくは存在しません。どちらを使用しても、プログラムは記述できます。
但し、見やすさという観点を重視すると、片方ばかりを使用していると非常に見づらいプログラムになってしまいますので、両方を併用しながら、上手なプログラムを記述できるように心がけていきましょう。