Select Case
文は、条件分岐を簡潔に記述するための構文ですが、特定の条件で何も処理を行わない場合があります。「何もしない」条件を明示的に記述することで、コードの可読性を向上させることができます。
Select Case
文で「何もしない」を表現する方法について解説します。
目次
Excel VBAでSelect Case文に「何もしない」条件を追加する方法
Select Case文の基本構文
Select Case
文では、条件に応じた処理を記述しますが、特定の条件で処理をスキップする場合は、その箇所に明示的に何もしないことを示す記述を追加できます。
Select Case 条件
Case 条件1
' 条件1に一致した場合の処理
Case 条件2
' 条件2に一致した場合の処理
Case Else
' その他の条件に一致した場合の処理
End Select
特定のCase
で何もしない場合、そのセクションを空白のままにするか、コメントで「何もしない」ことを示すのが一般的です。
Caseブロックを空にする
特定の条件で何もしない場合、Case
ブロックを空白にできます。ただし、この方法ではコードを読む際に処理が存在しない理由がわかりにくくなる場合があります。
Sub ExampleDoNothing1()
Dim value As Integer
value = 10
Select Case value
Case 5
MsgBox "値は5です。"
Case 10
' 何もしない
Case Else
MsgBox "値は5でも10でもありません。"
End Select
End Sub
コメントを記述して意図を明示する
「何もしない」理由をコメントで示すことで、コードの意図が明確になります。
Sub ExampleDoNothing2()
Dim value As Integer
value = 10
Select Case value
Case 5
MsgBox "値は5です。"
Case 10
' この条件では何もしない
Case Else
MsgBox "値は5でも10でもありません。"
End Select
End Sub
明示的にExit SubやExit Functionを記述する
特定の条件でその場で処理を終了する場合、Exit Sub
やExit Function
を記述することも考えられます。
Sub ExampleDoNothing3()
Dim value As Integer
value = 10
Select Case value
Case 5
MsgBox "値は5です。"
Case 10
Exit Sub ' 処理を終了
Case Else
MsgBox "値は5でも10でもありません。"
End Select
End Sub
データのフィルタリング
特定のデータに対して処理を行わずスキップする例です。
Sub FilterDataWithDoNothing()
Dim cell As Range
' 選択範囲内のセルをループ
For Each cell In Selection
Select Case cell.Value
Case "スキップ"
' この値の場合は処理をスキップ
Case "重要"
cell.Font.Bold = True ' 太字にする
Case Else
cell.Font.Italic = True ' 斜体にする
End Select
Next cell
End Sub
セルの値が"スキップ"
の場合は何も処理せず、そのほかの値に応じてフォントのスタイルを変更します。
【VBA】フォーマット設定:数値形式・フォント・背景色の一括/条件設定
ログ記録で条件をスキップする
ログ記録やデータ処理の中で、特定の条件を無視する場合の例です。
Sub LogProcessing()
Dim logLevel As String
logLevel = "INFO"
Select Case logLevel
Case "DEBUG"
' デバッグ情報は記録しない
Case "INFO"
MsgBox "情報を記録しました。"
Case "ERROR"
MsgBox "エラーを記録しました。"
Case Else
MsgBox "未知のログレベルです。"
End Select
End Sub
logLevel
が"DEBUG"
の場合は何も処理を行いません。
コーディングのポイント
- コメントを活用して意図を明示する
- 「何もしない」理由をコメントとして記述することで、後からコードを見た際に意図が明確になります。
- 空の
Case
ブロックは避ける- 空白の
Case
ブロックは、コードを読む人に意図を伝えづらいため、少なくとも' 何もしない
のようにコメントを追加するのが推奨されます。
- 空白の
- 早期終了を活用する
- 処理の流れをシンプルにするために、条件に応じて
Exit Sub
やExit Function
を活用すると、コードの可読性が向上します。
- 処理の流れをシンプルにするために、条件に応じて
まとめ
Excel VBAでSelect Case
文を使用する際に、「何もしない」条件を含めることは、条件に応じた柔軟な処理を可能にする重要なポイントです。単純に空白のブロックを作成するだけでなく、コメントや早期終了を活用することで、コードの意図が明確になり、保守性が向上します。