Select Case文とは

ある変数の値と複数の値を比較して、一致した値べつに異なる処理を行わせたいような場合はSelect Case文を使用します。

例えば、曜日を表す変数 weekdayがあるとします。この変数には 0:日曜日〜6:土曜日 のいずれかが入っている場合に、曜日別で処理したいような場合に使用します。

ここでは、以下について説明しま



Select Case文

Select Case文の書式を以下に示します

「Select Case」の右には、比較元の値が入っている変数を置きます。

比較対象の値は「Case 値」のように記述し、いくつでも書くことができます。

どの「Case 値」にも一致しない場合に何かしらの処理をさせたい場合は「Case Else」を書き、その下に実行させたい処理を書きます。

Select Case 変数
  Case 値1
    変数が値1と一致した場合の処理

  Case 値2
    変数が値2と一致した場合の処理
  
  :

  Case 値n
    変数が値nと一致した場合の処理
  
  Case Else
    いずれのCaseの値にも一致しなかった場合

End Select

以下は Select Case文 の例です

変数 weekday の値を0から6までの値と比較し、一致した「Case 値」の箇所に書かれているメッセージを表示します。

weekdayには2が入っていますので、「火曜日です」が表示されます。

  Option Explicit

Sub SelectCase文の例()

  Dim weekday As Integer
  Dim msg As String
  
  weekday = 2
  
  Select Case weekday
      Case 0
          msg = "日曜日"
      Case 1
          msg = "月曜日"
      Case 2
          msg = "火曜日"
      Case 3
          msg = "水曜日"
      Case 4
          msg = "木曜日"
      Case 5
          msg = "金曜日"
      Case 6
          msg = "土曜日"
      Case 2
          msg = "不正な値"
  End Select
  
  MsgBox msg + "です"

End Sub


複数の値と比較する

Caseには、カンマで区切って複数の値を書き、比較することができます。

いずれかの値と一致した時に処理を実行することができます。

Case 値1, 値2, 値3, ... 値n

以下は、変数 weekday が0, 1, 2, 3の場合に「週の前半」、4, 5, 6の場合に「週の後半」というメッセージを表示する例です。

    Option Explicit
  
Sub SelectCase文の例2()

  Dim weekday As Integer
  Dim msg As String
  
  weekday = 2
  
  Select Case weekday
      Case 0, 1, 2, 3
          msg = "週の前半"
      Case 4, 5, 6
          msg = "週の後半"
  End Select
  
  MsgBox msg + "です"

End Sub
  


Toで範囲比較をする

CaseでToを使用すると、変数を範囲で比較することができます。

Case 範囲の開始値 To 範囲の終了値

以下は、変数 weekday が0, 1, 2, 3の場合に「週の前半」、4, 5, 6の場合に「週の後半」というメッセージを表示する例です。

    Option Explicit
  
Sub SelectCase文の例3()

  Dim weekday As Integer
  Dim msg As String
  
  weekday = 2
  
  Select Case weekday
      Case 0 To 3
          msg = "週の前半"
      Case 4 To 6
          msg = "週の後半"
  End Select
  
  MsgBox msg + "です"

End Sub
  


Isで条件比較をする

CaseでIsを使用すると、変数を条件式で比較することができます。

Case Is 条件式

以下は、変数 weekday が3以下の場合に「週の前半」、4以上の場合に「週の後半」というメッセージを表示する例です。

Option Explicit

Sub SelectCase文の例4()

  Dim weekday As Integer
  Dim msg As String
  
  weekday = 2
  
  Select Case weekday
      Case Is <= 3
          msg = "週の前半"
      Case Is >= 4
          msg = "週の後半"
  End Select
  
  MsgBox msg + "です"

End Sub