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

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

Thenの概要

条件に応じた処理を実行する VBAの予約語

Then

概要 Then は、VBA の条件分岐(If ... Then ステートメント)で、条件が真の場合に実行する処理を指定するために使用されます。

わかりやすく説明 Then は、「もし条件が当てはまったら、この処理を実行するよ!」という意味の命令です。

  • If ... Then を使って条件分岐を行う。
  • 1行で記述する場合と、複数行で記述する場合がある。
  • ElseElseIf と組み合わせて、より複雑な条件分岐が可能。

Then の基本的な使い方

Then を使って、条件が満たされたときにメッセージを表示する基本的な例です。

Sub ExampleThen()
    Dim score As Integer
    score = 80
    
    If score >= 70 Then
        MsgBox "合格です!", vbInformation, "判定"
    End If
End Sub

解説:

  • If score >= 70 Then で条件を指定。
  • 条件を満たす場合(score が 70 以上のとき)にメッセージを表示。
  • End If を使い、複数行の If ステートメントを正しく終了させる。

1行で記述する場合

If … Then の処理が 1 つだけの場合、1行で記述できます。

Sub ExampleThenSingleLine()
    Dim score As Integer
    score = 80
    
    If score >= 70 Then MsgBox "合格です!"
End Sub

解説:

  • 処理が 1 行だけなら、Then の後に直接記述できる。
  • End If は不要。

Else を使った条件分岐

If … Then … Else を使うと、条件に応じて異なる処理を実行できます。

Sub ExampleThenElse()
    Dim score As Integer
    score = 60
    
    If score >= 70 Then
        MsgBox "合格です!", vbInformation, "判定"
    Else
        MsgBox "不合格です。", vbExclamation, "判定"
    End If
End Sub

解説:

  • Else を使い、条件が満たされなかった場合の処理を記述。
  • 70 以上なら「合格」、それ以外なら「不合格」のメッセージを表示。

ElseIf を使った複数条件の分岐

ElseIf を使うと、複数の条件を設定できます。

Sub ExampleThenElseIf()
    Dim score As Integer
    score = 85

    If score >= 90 Then
        MsgBox "評価: 優", vbInformation, "判定"
    ElseIf score >= 70 Then
        MsgBox "評価: 良", vbInformation, "判定"
    Else
        MsgBox "評価: 可", vbInformation, "判定"
    End If
End Sub

解説:

  • ElseIf を使い、複数の条件を順番にチェック。
  • 最初に条件を満たしたものが実行され、それ以降の条件はチェックされない。

Excel で Then を使う

Excel のセルの値に応じて、条件分岐を行う例です。

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

    If IsNumeric(cellValue) Then
        If cellValue >= 100 Then
            Range("B1").Value = "高得点"
        Else
            Range("B1").Value = "標準"
        End If
    Else
        MsgBox "A1 には数値を入力してください", vbExclamation, "エラー"
    End If
End Sub

解説:

  • A1 の値が数値なら、100 以上かどうかで判定し、B1 に結果を出力。
  • 数値でない場合はエラーメッセージを表示。

エラーを回避する方法

If … Then を使う際に、予期しないエラーを防ぐ方法を紹介します。

Sub SafeThenExample()
    Dim cellValue As Variant
    
    On Error Resume Next
    cellValue = Range("A1").Value
    
    If Err.Number <> 0 Then
        MsgBox "エラーが発生しました: " & Err.Description, vbExclamation, "エラー"
        Err.Clear
        Exit Sub
    End If
    
    If IsEmpty(cellValue) Then
        MsgBox "A1 が空白です", vbExclamation, "エラー"
    Else
        MsgBox "A1 の値: " & cellValue, vbInformation, "情報"
    End If
End Sub

解説:

  • On Error Resume Next を使い、エラーが発生した場合に適切に処理。
  • セルが空白の場合、適切なメッセージを表示。

Then の注意事項

  • 比較演算子を適切に使用する: =(等しい)、<(小さい)、>(大きい)などを正しく使う。
  • 条件が複雑な場合は Select Case を使う: If ... Then で条件が増えすぎると読みにくくなる。
  • 1行で記述する場合は注意: 可読性が低くなるため、複数行に分けるのが望ましい。

よくある質問

Q: If … Then を1行で書くのと複数行で書くのはどちらがよいですか?
A: 1行でも書けますが、複数行のほうが可読性が向上します。
Q: Else を省略できますか?
A: はい。条件に当てはまらなかった場合は何も実行されません。
Q: 数値比較でエラーが出ることがあります。なぜですか?
A: 文字列や空白が含まれている可能性があります。IsNumeric でチェックすると安全です。

まとめ

  • Then は、If ... Then ステートメントの一部として使用され、条件に応じた処理を実行する。
  • 1行で記述できるが、複雑な条件では複数行を使う方が可読性が向上する。
  • Else を使うことで、条件に当てはまらなかった場合の処理を記述できる。
  • ElseIf を使うと、複数の条件を段階的に評価できる。
  • Excel のセルの値を条件として判定し、動的な処理を行う際に役立つ。
  • エラーハンドリングを適用することで、予期しないエラーを回避できる。