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スキルは一歩前進します。ぜひ実務の複雑なロジック整理に活用してみてください。
