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行にまとめることでコードの記述量を減らし、見通しを良くすることができます。しかし、条件が増える場合は可読性が低下するため、適度に活用しましょう。