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

【VBA】Select Case 文を1行コードを書く方法

Select Case文は、複数の条件を簡潔に管理できる便利な構文ですが、通常は複数行にわたる記述が必要です。しかし、条件が少ない場合や、コードのシンプル化が求められる場合は、Select Case文を1行で記述して、よりコンパクトにコードをまとめることも可能です。Excel VBAでSelect Case文を1行で記述する方法や注意点について説明します。

Excel VBAでSelect Caseを1行で記述する方法

VBAでは、Select Case文のCaseブロックを1行で記述することが可能です。各Caseの後にセミコロン (:) を入れて、それぞれの条件ごとの処理を1行にまとめます。

数値条件のSelect Case文を1行で記述する方法

【使用例: Select Caseを1行で記述】

例えば、入力された数値がポジティブ、ゼロ、ネガティブかを判定し、それに応じたメッセージを表示するコードを1行で記述してみましょう。

Sub OneLineSelectCase()

Dim num As Integer
num = 5 ' テスト用の数値

Select Case num: Case Is > 0: MsgBox "ポジティブな数です。": Case 0: MsgBox "ゼロです。": Case Else: MsgBox "ネガティブな数です。"

End Sub

変数numの値に基づいて、次のようにメッセージを表示します。

  • numが正の数なら「ポジティブな数です。」と表示。
  • numが0なら「ゼロです。」と表示。
  • numが負の数なら「ネガティブな数です。」と表示。

文字列条件をCase条件を1行で記述する方法

Select Case文を1行で記述する場合、各Caseごとに「条件 : 処理内容」といった形式で記述します。セミコロン : で区切ることで、複数の命令を同じ行に並べることができます。

【使用例: 文字列を条件にした1行のSelect Case】

文字列を条件にした場合も、1行で書くことが可能です。

Sub OneLineSelectCaseWithString()

Dim color As String
color = "Blue"

Select Case color: Case "Red": MsgBox "色は赤です。": Case "Blue": MsgBox "色は青です。": Case "Green": MsgBox "色は緑です。": Case Else: MsgBox "色が不明です。"

End Sub

変数colorの値に応じてメッセージが変わります。color"Red""Blue""Green"以外の場合は「色が不明です。」というメッセージが表示されます。

範囲指定を1行で記述する方法

Select Caseの範囲指定も、1行で記述することが可能です。

Sub OneLineSelectCaseWithRange()

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 Sub

変数scoreの値に基づき、スコアを評価するメッセージを表示します。範囲も1行で記述できるため、複数行に渡るコードが1行に収まります。

1行でSelect Caseを使用する際の注意点

  • 可読性の維持: 複数の条件を1行にまとめると、コードの読みやすさが低下する場合があります。簡単な条件分岐の場合にのみ1行にまとめることを推奨します。
  • 条件が増えると管理が困難: 条件が多いと、1行で記述することでかえって複雑になります。その場合は、複数行で記述した方が見やすくなります。
  • セミコロンの使い方に注意: 各条件ごとの処理を区切る際にはセミコロン (:) を使用し、正しく区切らないと構文エラーの原因となります。

まとめ

Excel VBAのSelect Case文を1行で記述することで、シンプルな条件分岐をコンパクトに表現できます。条件の数が少ない場合や、シンプルな処理内容であれば、1行にまとめることでコードの記述量を減らし、見通しを良くすることができます。しかし、条件が増える場合は可読性が低下するため、適度に活用しましょう。

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