VBAのIfで条件分岐を行う方法をわかりやすく解説

スポンサーリンク
スポンサーリンク

Ifの概要

条件に応じて処理を分岐させる VBAの予約語

If

概要 If ステートメントは、VBAで条件を評価し、その結果に応じて異なる処理を実行するために使用されます。If...Then...ElseIf...Then...ElseIf...Else などの構文を利用できます。

わかりやすく説明 条件が真(True)の場合に特定の処理を実行し、偽(False)の場合に別の処理を実行する命令。

  • 条件によって処理を分岐させることができる。
  • 単純な条件分岐から複雑な多重条件まで対応可能。
  • Excel VBAでセルの値の判定やユーザー入力の処理に活用できる。

If Thenを使った基本的な条件分岐

以下の例では、If を使って数値の大小を判定し、メッセージを表示します。

Sub TestIf()
    Dim num As Integer
    num = 10

    If num > 5 Then
        MsgBox "numは5より大きいです。"
    End If
End Sub

解説:

  • If num > 5 Then: num が 5 より大きい場合にメッセージを表示。
  • 条件が満たされない場合は何もしない。

If Then Elseを使った処理の分岐

条件が満たされない場合に別の処理を行う例です。

Sub TestIfElse()
    Dim num As Integer
    num = 3

    If num > 5 Then
        MsgBox "numは5より大きいです。"
    Else
        MsgBox "numは5以下です。"
    End If
End Sub

解説:

  • num が 5 より大きい場合は「5より大きい」と表示。
  • そうでない場合(5以下)は「5以下」と表示。

ElseIfを使った複数条件の判定

複数の条件を判定し、それぞれ異なる処理を行う例です。

Sub TestIfElseIf()
    Dim score As Integer
    score = 75

    If score >= 90 Then
        MsgBox "評価: 優秀"
    ElseIf score >= 70 Then
        MsgBox "評価: 良"
    ElseIf score >= 50 Then
        MsgBox "評価: 可"
    Else
        MsgBox "評価: 不可"
    End If
End Sub

解説:

  • スコアが 90 以上なら「優秀」、70 以上なら「良」、50 以上なら「可」、それ以外は「不可」。

Excel VBAでのIfの活用

以下の例では、Excelのセルの値を判定し、条件に応じて異なるメッセージを表示します。

Sub CheckCellValue()
    Dim cellValue As Variant
    cellValue = Range("A1").Value

    If IsNumeric(cellValue) Then
        If cellValue > 50 Then
            MsgBox "A1の値は50より大きいです。"
        Else
            MsgBox "A1の値は50以下です。"
        End If
    Else
        MsgBox "A1には数値が入力されていません。"
    End If
End Sub

解説:

  • セル A1 の値が数値かどうかを判定(IsNumeric)。
  • 50 を超えていれば「50より大きい」、それ以外なら「50以下」。
  • 数値でない場合は「数値が入力されていない」と表示。

シングルラインIfステートメント

1行で書ける簡単な If 文の例です。

Sub SingleLineIf()
    Dim num As Integer
    num = 10

    If num > 5 Then MsgBox "numは5より大きいです。"
End Sub

解説:

  • 簡単な処理であれば、Then の後に直接実行内容を書ける。
  • ただし、Else は1行では使えない。

GoToと組み合わせたエラーハンドリング

エラー発生時に特定の処理へジャンプする例です。

Sub TestErrorHandling()
    On Error GoTo ErrorHandler

    Dim x As Integer
    x = 10 / 0 ' ゼロ除算エラーを発生

    Exit Sub

ErrorHandler:
    MsgBox "エラーが発生しました: " & Err.Description
End Sub

解説:

  • On Error GoTo ErrorHandler: エラーが発生したら ErrorHandler: へジャンプ。
  • Err.Description: エラーの詳細を取得してメッセージ表示。

Ifの注意事項

  • 複雑な条件は ElseIf で整理: 条件分岐が増えるときは ElseIf を活用。
  • シングルライン If は簡単な処理向け: 可読性を考慮して使い分ける。
  • 数値判定には IsNumeric を使用: 数値以外が入力された場合のエラーを防ぐ。

よくある質問

Q: If Then の後に複数の処理を1行で書けますか?
A: If num > 5 Then MsgBox "OK" : MsgBox "処理完了" のように「:」を使えば可能ですが、可読性が低くなるため推奨されません。
Q: If の中に If を入れても良いですか?
A: はい、ネスト(入れ子)にして複雑な条件を扱うことが可能です。
Q: 文字列の比較をするときに注意すべき点は?
A: 大文字・小文字を区別する場合は StrComp 関数を使うとよいです。

まとめ

  • If ステートメントは条件を判定し、処理を分岐させるために使用する。
  • ElseIf を使うことで複数の条件を扱える。
  • Excel VBAでのセル判定やエラーハンドリングに活用できる。
  • 適切にネストを活用し、可読性の高いコードを書くことが重要。