マクロに「もし〜なら」を判断させる!条件分岐(If文)の基礎

Level5 VBA・マクロ

ただ単純作業をマクロにやらせているだけでは勿体無い!
マクロが本当に賢くなるには、自分で状況を判断する能力が必要です。

実務では、以下のような判断が常に発生します。

  • 「もし金額が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で答えられる質問のことです。

これらの質問には、比較演算子という記号を使います。

比較演算子意味日本語訳の例
>大なり〜より大きい
<小なり〜より小さい
=等しい〜と等しい
>=大なりイコール以上
<=小なりイコール以下
<>不等しい〜と等しくない

【実例:数値の判断】

  • もし金額が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 = "" Then
    Exit Sub
たんたん
たんたん

こんな書き方もあるよ。

僕としては、省略せずに「End IF」を書くクセをつけるべき!

なぜなら
・処理が1行は珍しい
・「End if」がある方が後で見返しやすい

ただネットでサンプルコードを見たときに戸惑わないようにしよう。


今回のクエストを終えて

  • If文は If 条件 Then 処理 Else 処理 End If の構造。
  • 条件式には >、<、=、<> などの比較演算子を使う。
  • 3つ以上の判断は ElseIf を使って、上から順に判断させる。
  • 処理が1行で終わる場合でも、End If を書くクセをつける

これで、あなたのマクロは「判断力」という知性を手に入れました。

次回は、この判断力を活用し、大量のデータを自動で処理する「繰り返し処理(For Next)」に入ります。ボタン一発で1000行のデータを処理する、マクロの真骨頂を学びましょう!

コメント

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