【VBAリファレンス|実務向け】複雑な条件分岐にSelect Caseの裏技を使う|Excel VBA

スポンサーリンク

1. 導入:なぜこのテクニックが必要なのか

VBAでプログラミングをしていると、If…ElseIf文を重ねすぎてコードが読みづらくなった経験はありませんか?条件が複雑になればなるほど、インデントが深くなり、修正も困難になります。

今回ご紹介する「Select Case True」という裏技を使うと、複雑な条件分岐を非常にスマートに記述できます。特に、複数のセルを参照したり、異なる条件を組み合わせて判定したりする場合に、コードの可読性が劇的に向上します。

2. 基礎知識:Select Caseの本来の使い方と制限

通常、Select Caseは以下のように使います。

Select Case 評価対象
Case 条件A
Case 条件B
End Select

この形式では、評価対象とCaseの条件を比較します。しかし、これには「評価対象を一つしか指定できない」「複雑な論理式を記述しにくい」という制限があります。特に、複数のセルを横断的にチェックしたい場合、通常の書き方では限界があります。

3. 実装:Select Case True という裏技

この制限を突破するための裏技が、評価対象に「True」を指定する方法です。

Select Case True

と記述すると、各Case文に書かれた「式」がTrueになるかどうかを判定します。つまり、Caseの横に直接「条件式(例: A=B)」を書いてしまうのです。これにより、評価対象に縛られず、自由な条件式を並べることができます。

4. サンプルプログラム:実践的な活用例

以下のコードは、異なるセルの値を組み合わせて判定を行う実用的な例です。そのままコピーして標準モジュールに貼り付けてみてください。

Sub Sample_SelectCaseTrue()
‘ 複数のセル状態を組み合わせて条件分岐を行う
Select Case True
‘ Caseの横に直接条件式を書くことができる
Case Range(“A1”).Value = “A” And Range(“B1”).Value > 100
MsgBox “Aかつ100超です”

‘ Left関数やRight関数など、複雑な式もそのまま書ける
Case Left(Range(“C1”).Value, 1) = “済”
MsgBox “処理済みです”

‘ どの条件にも当てはまらない場合
Case Else
MsgBox “該当なし”
End Select
End Sub

5. 応用・注意点:現場で役立つポイント

■ 順序に注意する
Select Case Trueは、上から順に評価され、最初にTrueになったCaseが実行されます。複数の条件が重なる可能性がある場合は、優先順位が高い条件を上に記述してください。

■ Case Elseを活用する
条件に当てはまらないケース(例外処理)を必ず「Case Else」で定義する癖をつけましょう。これにより、予期せぬデータの入力ミスによるバグを防ぐことができます。

■ 可読性のバランス
このテクニックは非常に強力ですが、条件を詰め込みすぎると逆に分かりにくくなることがあります。あまりにも条件式が長い場合は、一度変数に格納してから判定を行うなど、コードのメンテナンス性にも配慮してください。

この「裏技」をマスターすれば、あなたのVBAスキルは一歩前進します。ぜひ実務の複雑なロジック整理に活用してみてください。

タイトルとURLをコピーしました