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