【Excelマクロ(VBa)】条件分岐(Select Case)


 Select Case文

Select Case文は 下記のように記載します。

Select Case 変数
  Case 値1
    値1に一致した場合に実行
  Case 値2
    値2に一致した場合に実行
  Case 値3
    値3に一致した場合に実行
  Case Else
    値1・2・3に一致しない場合に実行
    (上記の条件にどれも当てはまらない場合)
End Select

変数が値1、値2に一致した時に同じ処理をしたい場合、下記のようにカンマ区切りをします。

Select Case 変数
  Case 値1, 値2
    値1、値2に一致した場合に実行
  Case 値3
    値3に一致した場合に実行
  Case Else
    値1・2・3に一致しない場合に実行
    (上記の条件にどれも当てはまらない場合)
End Select

値1と値2に範囲があり(例えば10~20 等)、変数がその範囲内だった時に同じ処理をしたい場合、下記のようにtoを用います。

Select Case 変数
  Case 値1 to 値2
    値1~値2の範囲内だった場合に実行
  Case 値3
    値3に一致した場合に実行
  Case Else
    値1~2・3に一致しない場合に実行
    (上記の条件にどれも当てはまらない場合)
End Select

例として(余り良い例が見つからなかったので)3月決算の場合の年度を求める処理を記述します。

▽ カンマ区切りを用いた場合
Select Case Month(Now)
  Case 1, 2, 3
    MsgBox "現在は " & Year(Now) - 1 & "年度 " & Month(Now) & "月です"
  Case 4, 5, 6, 7, 8, 9, 10, 11, 12
    MsgBox "現在は " & Year(Now) & "年度 " & Month(Now) & "月です"
  Case Else
    MsgBox 月の指定に誤りがあります
End Select

▽ toを用いた場合
Select Case Month(Now)
  Case 1 to 3
    MsgBox "現在は " & Year(Now) - 1 & "年度 " & Month(Now) & "月です"
  Case 4 to 12
    MsgBox "現在は " & Year(Now) & "年度 " & Month(Now) & "月です"
  Case Else
    MsgBox 月の指定に誤りがあります
End Select

管理人 について

趣味:映画鑑賞・音楽鑑賞・ゲーム・旅行 仕事:会社員(IT関連)
カテゴリー: VBa(Excelマクロ), システム開発 パーマリンク

コメントを残す