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

【VBA】Select Caseステートメントの基本構文~実用的な使い方

Excel VBAでは、Select Case文を使用することで、複数の条件分岐を効率的に処理できます。If...ElseIf文と似た機能を持っていますが、特に多くの条件を処理する場合にはコードを簡潔に記述できるため、可読性が向上します。

Select Case文の基本構文から解説します。

Select Case文の基本構文

Select Case文では、1つの値を基準に複数の条件を評価し、それに応じた処理を実行します。

【基本構文】

Select Case 評価対象

Case 条件1

' 条件1に一致する場合の処理

Case 条件2

' 条件2に一致する場合の処理

Case 条件3, 条件4

' 条件3または条件4に一致する場合の処理

Case Else

' 上記のいずれの条件にも一致しない場合の処理

End Select


【使用例: 基本的なSelect Case文】

Sub ExampleBasicSelectCase()

Dim value As Integer
value = 3

Select Case value

Case 1

MsgBox "値は1です。"

Case 2

MsgBox "値は2です。"

Case 3

MsgBox "値は3です。"

Case Else

MsgBox "値が1、2、3以外です。"

End Select

End Sub

実行結果:
変数valueの値が3の場合、「値は3です。」というメッセージが表示されます。

Case Elseの役割

Case Elseは、指定した条件に一致しない場合の処理を記述するためのブロックです。これは、If...ElseIf...ElseElseに相当します。

【VBA】IF文のelseifを用いた複数条件

【使用例: Case Else】

Sub ExampleCaseElse()

Dim color As String
color = "Yellow"

Select Case color

Case "Red"

MsgBox "色は赤です。"

Case "Blue"

MsgBox "色は青です。"

Case Else

MsgBox "指定された色以外です。"

End Select

End Sub

複数の条件を1つのCaseにまとめる

1つのCaseブロックで複数の条件をまとめることができます。条件をカンマ(,)で区切ることで実現します。

【VBA】Select Caseで複数条件を使用する方法

【使用例: 複数の条件をまとめる】

Sub ExampleMultipleConditions()

Dim day As String
day = "Saturday"

Select Case day

Case "Saturday", "Sunday"

MsgBox "週末です。"

Case "Monday", "Tuesday", "Wednesday", "Thursday", "Friday"

MsgBox "平日です。"

Case Else

MsgBox "不明な日です。"

End Select

End Sub

範囲を使った条件分岐

Caseに範囲を指定することも可能です。

【VBA】Select Case文での複数処理の方法

【使用例: 範囲指定】

Sub ExampleRangeCase()

Dim score As Integer
score = 85

Select Case score

Case 90 To 100

MsgBox "成績: 優"

Case 70 To 89

MsgBox "成績: 良"

Case 50 To 69

MsgBox "成績: 可"

Case Else

MsgBox "成績: 不可"

End Select

End Sub

実行結果:
score85の場合、「成績: 良」と表示されます。

論理式を使用する方法

Select Case文では、条件に論理式を使用することも可能です。評価対象をTrueに設定し、各Caseブロック内で論理式を評価します。

【使用例: 論理式を使用】

Sub ExampleLogicalCase()

Dim age As Integer
age = 25

Select Case True

Case age < 18

MsgBox "未成年です。"

Case age >= 18 And age < 65

MsgBox "成人です。"

Case age >= 65

MsgBox "高齢者です。"

End Select

End Sub

セルの値に基づく処理

セルの値に基づいて、異なる処理を実行する例です。

Sub ExampleCellValue()

Dim value As Variant
value = Range("A1").Value ' セルA1の値を取得

Select Case value

Case Is > 100

MsgBox "値は100より大きいです。"

Case 50 To 100

MsgBox "値は50以上100以下です。"

Case Is < 50

MsgBox "値は50より小さいです。"

Case Else

MsgBox "値が不明です。"

End Select

End Sub

条件に応じてフォーマットを変更

セルの値に応じてフォーマットを変更する例です。

【VBA】特定の範囲のセルの値を取得:ループ処理

Sub ExampleConditionalFormatting()

Dim cell As Range

For Each cell In Range("A1:A10")

Select Case cell.Value

Case Is > 100

cell.Interior.Color = RGB(255, 0, 0) ' 背景色を赤に設定

Case 50 To 100

cell.Interior.Color = RGB(255, 255, 0) ' 背景色を黄色に設定

Case Is < 50

cell.Interior.Color = RGB(0, 255, 0) ' 背景色を緑に設定

Case Else

cell.Interior.ColorIndex = xlNone ' 背景色をクリア

End Select

Next cell

End Sub

注意点とベストプラクティス

  1. Case Elseを必ず記述する:
    • Case Elseを記述することで、予期しない値に対する処理をカバーできます。
  2. 条件の順序に注意:
    • 条件は上から順に評価されます。範囲や値が重なる場合、期待通りの結果にならない可能性があります。
  3. 可読性を意識する:
    • 条件が多くなる場合、コメントを付けたり、適切に改行して可読性を高めましょう。

まとめ

Excel VBAのSelect Case文を使うことで、複数の条件分岐を簡潔かつ効率的に記述できます。基本的な使い方から応用例まで、Select Case文は幅広い場面で活用できる便利な構文です。

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