分かりやすく、使いやすく。

Select Case で条件分岐する方法

スポンサーリンク

Excel VBA で Select Case を使用するサンプルコード集です。一般的なプログラミング言語と異なるのは、各 Case の最後に break が不要という点です。

  1. 基本形
  2. Case に複数の値を指定
  3. Case の値を範囲指定(FromとToの両方を指定)
  4. Case の値を範囲指定(FromとToのいずれか一方を指定)
  5. Case で好きに条件文を組み立てる


基本形

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Sub test()
    Dim intValue As Integer
    
    intValue = 3
    
    Select Case intValue
        Case 1
            Debug.Print "1の処理"
        Case 2
            Debug.Print "2の処理"
        Case 3
            Debug.Print "3の処理"
        Case Else
            Debug.Print "エラー処理"
    End Select
End Sub 

上記の実行結果は次の通りです。

実行結果
1
3の処理 

Case に複数の値を指定

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
 
Sub test()
    Dim intValue As Integer
    
    intValue = 3
    
    Select Case intValue
        Case 1, 3, 5
            Debug.Print "奇数の処理"
        Case 2, 4, 6
            Debug.Print "偶数の処理"
        Case Else
            Debug.Print "エラー処理"
    End Select
End Sub 

上記の実行結果は次の通りです。

実行結果
1
奇数の処理 

Case の値を範囲指定(FromとToの両方を指定)

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Sub test()
    Dim intValue As Integer
    
    intValue = 15
    
    Select Case intValue
        Case 0 To 9
            Debug.Print "0~9の処理"
        Case 10 To 19
            Debug.Print "10~19の処理"
        Case 20 To 29
            Debug.Print "20~29の処理"
        Case Else
            Debug.Print "エラー処理"
    End Select
End Sub 

上記の実行結果は次の通りです。

実行結果
1
10~19の処理 

Case の値を範囲指定(FromとToのいずれか一方を指定)

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Option Explicit
 
Sub test()
    Dim intValue As Integer
    
    intValue = 10
    
    Select Case intValue
        Case Is <= 9
            Debug.Print "9以下の処理"
        Case Is >= 10
            Debug.Print "10以上の処理"
        Case Else
            Debug.Print "エラー処理"
    End Select
End Sub 

上記の実行結果は次の通りです。

実行結果
1
10以上の処理 

Case で好きに条件文を組み立てる

Select Case True とすると、 Case で好きに条件が組めるようになります。この場合、 Case 内で 2 個以上の変数を演算した結果を判定に使用することもできます。

VBA(実行可能なサンプルコード)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Explicit
 
Sub test()
    Dim intA As Integer
    Dim intB As Integer
    
    intA = 10
    intB = 9
    
    Select Case True
        Case intA = intB
            Debug.Print "intAとintBは同じ"
        Case intA * intB >= 100
            Debug.Print "intA×intBは100以上"
        Case Else
            Debug.Print "intAとintBは不一致、且つ乗算して100未満"
    End Select
End Sub 

上記の実行結果は次の通りです。

実行結果
1
intA×intBは100以上 
スポンサーリンク
スポンサーリンク