【Excel自動化で必須!】VBAのIF文(条件分岐)とは?

VBA & Macro

IF文は、「もし〇〇なら△△する」みたいに、条件によって処理を分けたいときに使う。

例えば、「セルA1の値が100以上なら色を変える」とか、「ボタンが押されたらメッセージを表示する」とか。

IF文の基本形

① シンプルなIF文(1つの条件)

  • 例:セルA1の値が100以上ならメッセージを表示
    Sub SimpleIf()
      If Range("A1").Value >= 100 Then
        MsgBox "A1の値は100以上です!"
      End If
    End Sub
  • ポイント
  • If 条件 Then で始めて、処理を書き、最後に End If で閉じる
  • 条件が True なら Then の後の処理を実行

② IF~ELSE(2択の分岐)

  • 例:セルA1の値が100以上なら「OK」、未満なら「NG」
    Sub IfElse()
      If Range("A1").Value >= 100 Then
        MsgBox "OK!"
      Else
        MsgBox "NG…"
      End If
    End Sub
  • ポイント
  • If 条件 Then の後に Else をつけると、条件が False のときの処理も書ける

③ IF~ELSEIF(3つ以上の条件)

  • 例:セルA1の値によってメッセージを変える
    Sub IfElseIf()
      Dim score As Integer
      score = Range("A1").Value
      If score >= 80 Then
        MsgBox "合格!(80点以上)"
      ElseIf score >= 50 Then
        MsgBox "あとちょっと!(50点以上)"
      Else
        MsgBox "不合格…(50点未満)"
      End If
    End Sub
  • ポイント
  • ElseIf を使うと、条件を追加できる(無限に増やせる)
  • 上から順番に評価されるので、条件の順番に注意!

AND・ORを使った複数条件

④ AND(すべての条件を満たすとき)

  • 例:セルA1が100以上 かつ セルB1が50以上ならOK
    Sub IfAnd()
      If Range("A1").Value >= 100 And Range("B1").Value >= 50 Then
       MsgBox "両方クリア!"
    Else
    MsgBox "条件未達…"
    End If
    End Sub
  • ポイント
  • And を使うと、両方の条件を満たしたときだけ True になる

⑤ OR(どれか1つの条件を満たせばOK)

  • 例:セルA1が100以上 または セルB1が50以上ならOK
    Sub IfOr()
    If Range("A1").Value >= 100 Or Range("B1").Value >= 50 Then
    MsgBox "どちらかクリア!"
    Else
    MsgBox "両方NG…"
    End If
    End Sub
  • ポイント
  • Or を使うと、どれか1つでも条件を満たせば True になる

⑥IF文を1行で書く(シンプルな条件)

  • 例:セルA1の値が100以上ならOK(1行で書く)
    If Range("A1").Value >= 100 Then MsgBox "OK!"
  • ポイント
  • Then の後にすぐ処理を書くと、End If なしで1行にできる
  • でも、複雑な処理を書くなら普通の形にした方が見やすい

⑦IF文のネスト(入れ子構造)

  • 例:セルA1が100以上なら、さらにB1が50以上かチェック
    Sub NestedIf()
    If Range("A1").Value >= 100 Then
    If Range("B1").Value >= 50 Then
    MsgBox "A1は100以上 & B1は50以上!"
    Else
    MsgBox "A1は100以上だが、B1は50未満…"
    End If

    Else
    MsgBox "A1が100未満…"
    End If
    End Sub
  • ポイント
  • IFの中にIFを書くこともできる(ネスト)
  • ただし、ネストしすぎると コードが読みにくくなる ので注意

まとめ

IF文はめちゃくちゃよく使うから、色々試してみるといいよ!

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