Select Case文 VBAで自動化 VBAテクニック集 VBA一覧 文法・構文

【VBA】Select Case文で「何もしない」条件

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 SubExit Functionを記述することも考えられます。

【VBA】Exit Subの基本~実用的な使い方

【VBA】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】特定の範囲のセルの値を取得:ループ処理

【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"の場合は何も処理を行いません。

コーディングのポイント

  1. コメントを活用して意図を明示する
    • 「何もしない」理由をコメントとして記述することで、後からコードを見た際に意図が明確になります。
  2. 空のCaseブロックは避ける
    • 空白のCaseブロックは、コードを読む人に意図を伝えづらいため、少なくとも' 何もしないのようにコメントを追加するのが推奨されます。
  3. 早期終了を活用する
    • 処理の流れをシンプルにするために、条件に応じてExit SubExit Functionを活用すると、コードの可読性が向上します。

まとめ

Excel VBAでSelect Case文を使用する際に、「何もしない」条件を含めることは、条件に応じた柔軟な処理を可能にする重要なポイントです。単純に空白のブロックを作成するだけでなく、コメントや早期終了を活用することで、コードの意図が明確になり、保守性が向上します。

-Select Case文, VBAで自動化, VBAテクニック集, VBA一覧, 文法・構文