VBAでIfステートメントをSelect Caseに置き換える方法と注意点

Visual Basic

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を使うことで、元の処理と同等の動作を実現できます。複数条件にも対応できるため、可読性の高いコード設計が可能です。

コメント

タイトルとURLをコピーしました