条件分岐(Select Case)の使い方。複数条件(And、Or)、あいまい検索、入れ子の解説

初心者

まえがき

基本的にはIf文と同じですが、選択肢が多い場合は(Select)Case文の方が綺麗にプログラムが書けます。

Select Caseの処理フローは以下のイメージになります。

Selectと言っても並列で選ぶのでは無く、上の条件から順に判定されます。

基本的には、記載方法が違うだけで覚えるのも簡単ですので、違いだけ理解しておきましょう。

共通設定が変数

A = InputBox(“1から3までの数字を入力してください”) ‘変数Aを入力する
Select Case A‘共通設定として変数Aを設定する
    Case 1
        MsgBox “1だべ” ‘変数A=1の処理
    Case 2
        MsgBox “2ざます” ‘変数A=2の処理
    Case Else
        MsgBox “どっちでもないでごわす” ‘変数Aが上記以外の処理
End Select

[Select Case A]という変数を指定した例です。

If文の場合は毎回A=〇と記載しないといけないのに対して、Case文では最初に変数を設定する事で、選択肢では数字だけ記載すれば良いので、シンプルな表現となります。

またIF文では最初はIf、2番目以降はElseIfと表記が違いますが、Case文はCaseだけなので、簡単です。

共通設定がTrue

[Select Case True]という記載にすると条件が満たされた場合となるので、If文と同じように、それぞれ違う条件を設定できます。例を記載します。

A =1 ‘変数Aを1とする
B =2 ‘変数Bを2とする
Select Case True’True(真)の場合処理を実施
    Case B =2
        MsgBox “B は2だべ” ‘変数B=2の処理
    Case A =1
        MsgBox “Aは1ざます” ‘変数A=1の処理
    Case Else
        MsgBox “どっちでもないでごわす” ‘上記以外の処理
End Select

上のCaseから処理されるので、[B =2]の結果として、メッセージボックス[B は2だべ]が表示されて、他の分岐は判定されずに終了します。

Case文の条件式

Caseの条件文もIF文と全く同じです。

条件式 説明
A = B AがBと一致する場合
A <> B AがBと一致しない場合
A >= B AがB以上の場合
A <= B AがB以下の場合
A > B AがBより大きい場合
A < B AがBより小さい場合

範囲指定

範囲を指定する場合は以下のように[To]を入れます。

  Case 1 To 2‘変数=1 ~ 2の場合

あいまい検索(Like)

IF文と同じで、Case文でもあいまい検索が可能です。

Case【変数】 Like “【頭の文字】*” Then
Case【変数】 Like “*【真ん中の文字】*” Then
Case 【変数】 Like “【後ろの文字】*” Then

ポイントはLikeを使う事と、不明な文字列側に*(アスタリスク)を付けることです。*は正規表現で不明な文字列を表すのに使われ、このような使い方をする事が多いので覚えておきましょう。

AND条件

And条件にする事で2つ以上の条件を満たした場合に処理をさせる事ができます。

Case 【条件1】 And 【条件2】‘条件1と条件2が真の場合

CaseTrueでif文と同じようなAND条件の設定も可能です。

A = 1
B = 2
Select Case True ‘True(真)の場合処理を実施
    Case A = 1 And B = 3
        MsgBox “Aは1でB は2だべ”
    Case A = 1 And B = 2
        MsgBox “Aは1でBは2ざます”
    Case Else
        MsgBox “どっちでもないでごわす” ‘上記以外の処理
End Select

上の例ではAが1ですがBは2なので、1つ目のAND条件(A = 1 And B = 3)に一致せず、2つ目のAND条件(A = 1 And B = 2)となります。

OR条件

OR条件はIf文と異なり、Caseの後ろを[,](コンマ)で区切ります。

Select Case A‘変数をAとする
  Case 1, 2
   MsgBox “A は1か2″ ‘変数=1 Or 変数=2の処理
  Case 3, 4, 5
   MsgBox “B は3か4か5″ ‘変数=3 Or 変数=4 Or 変数=5の処理
  Case Else
   MsgBox “1~5以外” ‘変数が上記以外の処理
End Select

OR条件は左から順に判定され、一致するものがあると右の値は判定されず、処理されます。よく使われる分岐を左に置くと処理が軽くなります。このように処理量を下げるように分岐の工夫をする事をショートサーキットと呼ぶこともあります。

CaseTrueでif文と同じようなOR条件の設定も可能です。

A = 1
B = 2
Select Case True ‘True(真)の場合処理を実施
    Case B = 3
        MsgBox “B は2だべ” ‘変数B=2の処理
    Case A = 3, B = 2
        MsgBox “Aは3、またはBは2ざます”
    Case Else
        MsgBox “どっちでもないでごわす” ‘上記以外の処理
End Select

上の例ではBは2なので、2つ目のOR条件が左から順に判定され、A=3×→B=2〇となって条件に一致します。

入れ子設定

Case文もIf文と同様に、Case文の選択肢の中に、新たにCase文を入れる事で入れ子設定が可能です。

Case文の解説は以上です。

変数が同じ場合は省略できる事と、OR条件の記載方法が違うだけで、できる事はIf文と同じ事が分かると思います。

基本的には好みで良いと思いますが、選択肢が多い場合はCase文を使って、入れ子などの複雑な選択をさせる場合はIf文を使った方が、プログラムの見栄えは良くなると思います。

Copy Protected by Tech Tips's CopyProtect Wordpress Blogs.
タイトルとURLをコピーしました