ただ単純作業をマクロにやらせているだけでは勿体無い!
マクロが本当に賢くなるには、自分で状況を判断する能力が必要です。
実務では、以下のような判断が常に発生します。
- 「もし金額が10万円以上なら、太字にする。」
- 「もし在庫がないなら、発注のメッセージを出す。」
今回は、この「もし〜なら」をVBAで実現する「条件分岐(If文)」を学びます。
If文を使えば、あなたのマクロはただの命令実行機から、状況に応じて振る舞いを変える「判断ロボット」へと進化します。

もしまだLevel3でIF関数を学習していない方は、先にIF関数から挑戦しましょう。
IF関数が基礎となります。
If文は「Yes/No」で道を決める信号機
If文の構造は、人間が判断する手順と全く同じです。
If文の基本構造(2択)
基本的な条件分岐である2択の選択方法は以下の通りです。
If条件式Then: 「もし、条件式が真なら」Else: 「それ以外なら(偽なら)」End If: 「判断終わり」
If 条件式 Then
' 条件が「真 (True/Yes)」のときに実行する処理A
Else
' 条件が「偽 (False/No)」のときに実行する処理
End If


IF関数と全く同じだね!
関数: =IF( 条件式 , 処理A(真) , 処理B(偽) )
これの書き方をVBAだと
「IF条件式Then・処理A・Else・処理B・End IF」
って順番に変わるだけだよ!
条件式で使う「比較演算子」を覚える
If文の最も重要な部分が 条件式 です。
これは、「AはBより大きいか?」「セルの中身は『完了』という文字か?」といった、YesかNoで答えられる質問のことです。
これらの質問には、比較演算子という記号を使います。
| 比較演算子 | 意味 | 日本語訳の例 |
| > | 大なり | 〜より大きい |
| < | 小なり | 〜より小さい |
| = | 等しい | 〜と等しい |
| >= | 大なりイコール | 〜以上 |
| <= | 小なりイコール | 〜以下 |
| <> | 不等しい | 〜と等しくない |

これもIF関数と全く同じだね!
もし確認したければ、この記事を参考にしてね。
【実例:数値の判断】
- もし金額が10000円より大きければ、
If kingaku > 10000 Then
【実例:文字列の判断】
- もしA1セルの中身が「完了」という文字と等しければ、
If Range("A1").Value = "完了" Then

文字列だから「” “(ダブルクォーテーション)」
で囲むんだよ!
逆に数値で大小関係を比較したいなら「100」
みたいに数字をそのまま入力しよう。
応用:3つ以上の道に分かれる「ElseIf」
2択(IfとElse)だけでなく、3つ以上の道に分かれる場合もあります。
その際は、ElseIf を使って、いくつでも条件を追加できます。
If 条件式1 Then
' 条件1が真のときの処理A
ElseIf 条件式2 Then
' 条件1は偽だが、条件2が真のときの処理B
Else
' どの条件にも当てはまらないときの処理C
End If


ElseIfこそVBAで条件分岐を扱うメリットだよ!
何個条件が続こうが、ただ追加していくだけでいいんだ。
IF関数で複数条件を扱った時を覚えているかな?
かなり複雑な式になってしまうんだ。
だから僕は複数条件のとき、なるべくVBAを使うよ。
【実例:ランク付け】
Dim score As Integer
score = Range("B2").Value
If score >= 90 Then
Range("C2").Value = "S評価"
ElseIf score >= 70 Then
Range("C2").Value = "A評価"
Else
Range("C2").Value = "C評価"
End If

If文をさらに短く!1行で書く方法
If文は、中に実行する処理が1行しかない場合、End If を省略して1行で書くことができます。
- 長い書き方:(推奨)
If Range("A1").Value = "" Then
Exit Sub ' マクロを終了するEnd If - 短い書き方:(参考)
If Range("A1").Value = "" ThenExit Sub

こんな書き方もあるよ。
僕としては、省略せずに「End IF」を書くクセをつけるべき!
なぜなら
・処理が1行は珍しい
・「End if」がある方が後で見返しやすい
ただネットでサンプルコードを見たときに戸惑わないようにしよう。
今回のクエストを終えて
- If文は
If 条件 Then 処理 Else 処理 End Ifの構造。 - 条件式には
>、<、=、<>などの比較演算子を使う。 - 3つ以上の判断は
ElseIfを使って、上から順に判断させる。 - 処理が1行で終わる場合でも、End If を書くクセをつける
これで、あなたのマクロは「判断力」という知性を手に入れました。
次回は、この判断力を活用し、大量のデータを自動で処理する「繰り返し処理(For Next)」に入ります。ボタン一発で1000行のデータを処理する、マクロの真骨頂を学びましょう!








コメント