VBAのOrで複数の条件を組み合わせる方法をわかりやすく解説

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

Orの概要

論理演算 VBAの予約語

Or

概要 Or 演算子は、VBAで複数の条件のいずれかが満たされた場合に処理を実行するために使用されます。

わかりやすく説明 Or は、「どちらか1つでもTrueならOK!」という命令です。複数の条件のどれかが満たされていれば処理を実行します。

  • 複数の条件のどれか1つでも True なら処理を実行する。
  • 主に If ... ThenSelect Case で使用される。
  • 論理演算だけでなく、ビット演算にも使える。

Orの基本的な使い方(条件分岐)

Or を使って、複数の条件のどれかが満たされた場合にメッセージを表示する例です。

Sub CheckOrCondition()
    Dim userInput As String
    userInput = InputBox("値を入力してください(OK または Yes)")
    
    If userInput = "OK" Or userInput = "Yes" Then
        MsgBox "入力が有効です。", vbInformation, "Orの例"
    Else
        MsgBox "無効な入力です。"
    End If
End Sub

解説:

  • ユーザーが “OK” または “Yes” を入力すると、メッセージを表示。
  • どちらか1つの条件が満たされれば処理が実行される。

ExcelでのOrの活用例(セルの値をチェック)

Excelのセルに特定の値が入力されているかを判定する例です。

Sub CheckCellValue()
    Dim cellValue As String
    cellValue = Range("A1").Value
    
    If cellValue = "Apple" Or cellValue = "Banana" Then
        MsgBox "A1セルには果物が入力されています。", vbInformation, "セルチェック"
    End If
End Sub

解説:

  • セルA1が “Apple” または “Banana” の場合にメッセージを表示。
  • どちらか一方の条件を満たせば処理が実行される。

Or を使ったループ処理

Or を使って、複数の終了条件を設定する例です。

Sub LoopWithOr()
    Dim i As Integer
    i = 1
    
    Do While i <= 10 Or i = 0
        Debug.Print "i の値: " & i
        i = i + 1
    Loop
End Sub

解説:

  • i が 10 以下 または i = 0 の場合、ループを継続。
  • 条件が満たされなくなると、ループが終了。

Orを使ったビット演算

Or は論理演算だけでなく、ビット演算にも使用できます。

Sub BitwiseOrExample()
    Dim a As Integer, b As Integer, result As Integer
    a = 5  ' 5 = 00000101 (2進数)
    b = 3  ' 3 = 00000011 (2進数)
    
    result = a Or b ' ビット単位のOR演算
    
    MsgBox "ビット演算の結果: " & result, vbInformation, "Or演算"
End Sub

解説:

  • 5(00000101)と 3(00000011)のビットごとに OR 演算を行う。
  • 結果は 7(00000111)になる。

エラーを回避する方法

Or を使用する際に、適切な型を比較しないとエラーが発生することがあります。

Sub SafeOrUsage()
    Dim num As Variant
    num = Null ' Null値を設定
    
    On Error Resume Next
    If num = 5 Or num = 10 Then
        MsgBox "条件を満たしました。"
    Else
        MsgBox "条件を満たしていません。"
    End If
    
    If Err.Number <> 0 Then
        MsgBox "エラー発生: " & Err.Description, vbExclamation, "エラー"
        Err.Clear
    End If
End Sub

解説:

  • Null 値と数値を比較するとエラーが発生するため、エラーハンドリングを追加。
  • エラー発生時に適切な処理を行う。

Orの注意事項

  • 論理演算とビット演算の違いに注意: Or は論理演算(True/False)とビット演算の両方に使用できる。
  • 型の一致を確認する: Null や Empty を比較する際は事前チェックが必要。
  • 条件が増えると可読性が低下: 条件が複雑になる場合は Select Case を使う方が見やすくなる。

よくある質問

Q: Or はどんな時に使いますか?
A: 2つ以上の条件のどれかが満たされたときに処理を実行したい場合に使います。
Q: Or と And の違いは?
A: Or は「どちらか1つがTrueならOK」、And は「両方がTrueならOK」という違いがあります。
Q: Or は数値の比較にも使えますか?
A: はい。ただし、Null や Empty を比較するとエラーになることがあるため注意が必要です。
Q: Or を複数回使うと動作が遅くなりますか?
A: 条件が多い場合、Select Case などを使う方が処理効率が良くなることがあります。

まとめ

  • Or は複数の条件のどれかが満たされれば処理を実行する。
  • Excelのセルチェックや入力値の判定などに便利。
  • 論理演算だけでなく、ビット演算にも使用可能。
  • 型の不一致に注意し、エラーハンドリングを適用する。