【VBAリファレンス|実務向け】第8回 IF関数を使って判定の処理をしよう 3/5

スポンサーリンク

VBAにおける条件分岐の「真実」

皆さん、こんにちは。VBA講師の私です。これまでIF関数(正確にはIFステートメント)の基本を学んできましたが、今回は実務で最も差がつく「条件の重ね方」について解説します。初心者の方はIFの中にIFを入れ子(ネスト)にしてしまいがちですが、コードが複雑化する原因はそこにあります。

入れ子地獄を回避する「ガード節」という考え方

実務の現場では「AかつBかつC」という複雑な条件を判定することが多いですよね。例えば「売上が目標達成、かつ顧客ランクがA、かつクレーム履歴がない場合」といったケースです。これをすべてIFで囲うと、コードが右へ右へと深くなり、可読性が著しく低下します。

そこで活用してほしいのが「ガード節」というテクニックです。これは「条件を満たさない場合」を先に判定して、すぐに処理を終了(Exit Sub)させる手法です。

具体的な事例で比較する

例えば、入力値チェックを行う場面を想像してください。

悪い例:
IF セルが空ではない THEN
IF セルが数値である THEN
‘ここにメインの計算処理を書く
ELSE
MsgBox “数値を入力してください”
END IF
ELSE
MsgBox “値を入力してください”
END IF

これではメインの処理がどんどん右に追いやられますね。これをガード節で書き直すとこうなります。

良い例:
IF セルが空 THEN MsgBox “値を入力してください”: Exit Sub
IF NOT IsNumeric(セル) THEN MsgBox “数値を入力してください”: Exit Sub

‘ここにメインの計算処理を書く

なぜこの書き方が「実務向け」なのか

この書き方のメリットは、「正常系をメインの左端に配置できる」ことにあります。人間は左から右へ文字を読みます。メインのロジックが常に左端にあることで、コードの全体像を瞬時に把握できるようになります。

実務において、コードは「書く時間」より「読み返す時間」の方が圧倒的に長いです。自分が半年後にこのコードを見たとき、どこが核心部分なのか一目でわかるように書く。これができる人が、現場で重宝されるVBAエンジニアです。

次回は、IF文で書ききれないほど条件が増えた時に使う「Select Case文」についてお話しします。これも実務では必須のスキルですよ。それでは、各自の業務データでガード節が使えないか試してみてください。

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