VBAで条件分岐を行う際、IfステートメントをSelect Caseに置き換えることは可能です。ただし、書き方やスコープに注意しないと意図した動作にならない場合があります。本記事では、Forループ内でのセルの値チェックを例に、正しいSelect Caseの書き方を解説します。
Ifステートメントの基本形
元のコードは以下の通りです。
For j1 = 3 To 30
If Cells(1, j1) = "コード" Then
Exit For
End If
Next j1
この場合、1行目のセルの値が「コード」と一致した時点でループを抜けます。
Select Caseへの置き換え
IfステートメントをSelect Caseに置き換える場合、Case句内にExit Forを記述する形が基本です。
正しい書き方の例。
For j1 = 3 To 30
Select Case Cells(1, j1).Value
Case "コード"
Exit For
End Select
Next j1
注意点とポイント
1. Cells(行, 列)に.Valueを明示すると、意図せずオブジェクト参照にならず安全です。
2. Select CaseのEnd SelectはCaseごとではなく、Select Case全体の終了を示します。
3. Exit ForはCase内に直接書きます。これにより一致した場合に即ループを抜けることができます。
複数条件の場合の拡張
複数の値でループを抜けたい場合も、Select Caseを使うと可読性が向上します。
例:For j1 = 3 To 30
Select Case Cells(1, j1).Value
Case "コード", "ID", "商品名"
Exit For
End Select
Next j1
まとめ
VBAでIfステートメントをSelect Caseに置き換える場合、Cellsの.Valueを明示し、Case内でExit Forを使うことで、元の処理と同等の動作を実現できます。複数条件にも対応できるため、可読性の高いコード設計が可能です。


コメント