よく使うステートメント

Select Case

 条件分岐で「If ~ Elseif」があります。
しかし条件がいくつもある場合、「Select Case」を使用した方がよい場合があります。

Select Case ステートメントは、特定の値に注目して、それによって処理の流れを分岐させる方法です。

Select Case 条件判断の対象
 Case 値1
  対象が値1の時の処理
 Case 値2
  対象が値2の時の処理
 ・・・・
 ・・・・
 Case Else
  いづれでもない時の処理
End Select


具体例で説明します。

 誕生日の年月を入れ「実行」ボタンをクリックします。
B5 に誕生月を表示し、E5 にその月を英語で表示します。
同時に E6 に誕生石を表示します。

Sub birthday()

  Dim MT As Long ‘①
  Dim EM As String ‘②
  Dim TS As String ‘③

 ‘C3の月数が 変数MTに代入
  MT = Range(“C3”).Value

  Select Case MT ‘④
    Case 1
      EM = “January”
      TS = “ガーネット “
    Case 2
      EM = “February”
      TS = “アメジスト”
    Case 3
      EM = “March”
      TS = “アクアマリン “
    Case 4
      EM = “March”
      TS = “ダイヤモンド”
    Case 5
      EM = “May”
      TS = “エメラルド”
    Case 6
      EM = “June”
      TS = “パール”
    Case 7
      EM = “July”
      TS = “ルビー”
    Case 8
      EM = “August”
      TS = “ベリドット”
    Case 9
      EM = “September”
      TS = “サファイア”
    Case 10
      EM = “October”
      TS = “オパール”
    Case 11
      EM = “November”
      TS = “トパーズ”
    Case 12
      EM = “December”
      TS = “トルコ石”
     Case Else  ’⑤
      EM = “(月が誤り)”
      TS = ” – “
  End Select

 ‘それぞれのセルに表示
  Range(“B5”) = MT
  Range(“E5”) = EM
  Range(“E6”) = TS

End Sub

①「月」の変数でデータ型は数字
②「英語表記」の変数でデータ型は文字列
③「誕生石」の変数でデータ型は文字列

④ MT すなわち「月」が「条件判断の対象」です。
 1の時(1月の時)は January、ガーネット
 2の時は February 、アメジスト
 ・・・
 のように分岐しており、この場合MTが 4なので、EMは April となります。
同時に誕生石は ダイヤモンド になります。

⑤ 最後の「Case Else」はどの条件にも当てはまらないときの対応です。
 すなわち誤って月を 0とか 13 とか入力した場合、「(月が誤り)」として表示されます。また誕生石は「 – 」になります。

このように分岐の数が多い場合は「If ~ Elseif」より使いやすい面があります。
また実務上も使用することの多いステートメントです。

「Case 値」の書き方
  条件分岐を判断する値の指定方法

値が3のときCase 3
値が 10 または 20 のときCase 10,20
値が 15 から 25 のときCase 15 to 25
値が 15 以上のときCase Is >=15