サンプル集  >  Excel VBA  >  Select Case
Select Case
2010/08/25

Select Case文を使っていて上手く動かない部分があったので確認してみます。

◆環境
OS Windows XP Professional Version 2002 Service Pack 3
Excel 2003 (11.8169.8172) SP3

上手く動かない部分は以下の箇所です。

    Case 2
    Case 3
        ・・・何か処理

Case 2とCase 3で同じ処理を行いたいのですが、思い通りに動きません。 でもコンパイルエラーにもなりません。 またCase 2でもCase 2:(最後にコロンを付けた)でもエラーが出ません。 簡単なプログラムを作成し、動作を見てみます。

selectCase.xls
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
39: 
40: 
Sub selectCaseTest()

    Dim msg As String

    msg = selectCase(0) & vbCrLf
    msg = msg & selectCase(1) & vbCrLf
    msg = msg & selectCase(2) & vbCrLf
    msg = msg & selectCase(3) & vbCrLf
    msg = msg & selectCase(4) & vbCrLf
    msg = msg & selectCase(5) & vbCrLf
    msg = msg & selectCase(6) & vbCrLf

    MsgBox msg

End Sub

Function selectCase(val As Integer)

    Dim msg As String

    msg = "val:" & val & " res:"

    Select Case val
    Case 0
        msg = msg & "ゼロ"
    Case 1:
        msg = msg & "one"
    Case 2
    Case 3
        msg = msg & "2-3"
    Case 4:
    Case 5:
        msg = msg & "4-5"
    Case Else
        msg = msg & "other"
    End Select

    selectCase = msg

End Function

VBエディターの実行ボタンを押して実行します。

値が 2の場合と 4の場合のときCase の何処にも、Case Else にも引っかかっていないようです。

VBではこの場合、Case 2,3 のようにカンマで区切るか、Case 2 To 3 のように書かなければならないようです。

selectCase.xls
 1: 
 2: 
 3: 
 4: 
 5: 
 6: 
 7: 
 8: 
 9: 
10: 
11: 
12: 
13: 
14: 
15: 
16: 
17: 
18: 
19: 
20: 
21: 
22: 
23: 
24: 
25: 
26: 
27: 
28: 
29: 
30: 
31: 
32: 
33: 
34: 
35: 
36: 
37: 
38: 
Sub selectCaseTest()

    Dim msg As String

    msg = selectCase(0) & vbCrLf
    msg = msg & selectCase(1) & vbCrLf
    msg = msg & selectCase(2) & vbCrLf
    msg = msg & selectCase(3) & vbCrLf
    msg = msg & selectCase(4) & vbCrLf
    msg = msg & selectCase(5) & vbCrLf
    msg = msg & selectCase(6) & vbCrLf

    MsgBox msg

End Sub

Function selectCase(val As Integer)

    Dim msg As String

    msg = "val:" & val & " res:"

    Select Case val
    Case 0
        msg = msg & "ゼロ"
    Case 1:
        msg = msg & "one"
    Case 2, 3
        msg = msg & "2-3"
    Case 4 To 5
        msg = msg & "4-5"
    Case Else
        msg = msg & "other"
    End Select

    selectCase = msg

End Function

実行してみます。

値が 2の場合も 4の場合も思い通りに動作しました。 言語の微妙な違いには注意が必要ですね。

▲ PageTop  ■ Home


Copyright (C) 2013 ymlib.com