Excel VBA

【Excel VBA】論理演算子による条件分岐【And, Orなど】

本記事の内容

Excel VBAマクロで論理演算子による条件分岐を行う方法をご紹介

→ And, Orなどで条件を組み合わせる

 

こんな方におすすめ
  • Excel VBAマクロで複雑な条件分岐を実現したい方
  • VBA勉強中の方

 

論理演算子とは?

論理演算子とは下記の通りです。

論理演算子とは?

プログラミング言語などに用意された、論理演算を表す記号

 

ちなみに論理演算とはAnd演算やOr演算などで、主な演算子は下記の通りです。

<論理演算子一覧>

演算子呼び方構文意味
And論理積条件1 And 条件2条件1を満たし、かつ条件2も満たす。
Or論理和条件1 Or 条件2条件1か条件2のいずれか、または両方を満たす。
Not論理否定Not 条件条件を満たさない。
Eqv論理等価演算条件1 Eqv 条件2条件1を満たし、かつ条件2も満たす。
または、条件1を満たさない、かつ条件2も満たさない。
Imp論理包含演算条件1 Imp 条件2条件1を満たさない、または条件2を満たす。
Xor排他的論理和条件1 Xor 条件2条件1を満たし、かつ条件2を満たさない。
または、条件2を満たし、かつ条件1を満たさない。

 

使用例1 : And, Or, Notを使用した条件分岐

And, Or, Not構文を用いたソースコードの例は下記の通りです。

<サンプルコード>

Sub sample()

    '比較用の変数を定義
    Dim num1 As Long
    Dim num2 As Long
    
    'And演算子を用いた比較
    num1 = 2
    num2 = 4
    Debug.Print "num1 = " & num1 & " / num2 = " & num2
    
    'num1とnum2のどちらも5より小さい場合はTRUE
    If num1 < 5 And num2 < 5 Then
        'こちらが実行される
        Debug.Print "[num1 < 5 And num2 < 5]の結果がTRUE" & vbCrLf
    Else
        Debug.Print "[num1 < 5 And num2 < 5]の結果がFALSE" & vbCrLf
    End If


    'Or演算子を用いた比較
    num1 = 2
    num2 = 6
    Debug.Print "num1 = " & num1 & " / num2 = " & num2

    'num1とnum2のどちらかが5より小さい場合はTRUE
    If num1 < 5 Or num2 < 5 Then
        'こちらが実行される
        Debug.Print "[num1 < 5 Or num2 < 5]の結果がTRUE" & vbCrLf
    Else
        Debug.Print "[num1 < 5 Or num2 < 5]の結果がFALSE" & vbCrLf
    End If


    'Not演算子を用いた比較
    num1 = 2
    Debug.Print "num1 = " & num1

    'num1が5より小さくない場合(5以上の場合)はTRUE
    If Not num1 < 5 Then
        Debug.Print "[Not num1 < 5]の結果がTRUE" & vbCrLf
    Else
        'こちらが実行される
        Debug.Print "[Not num1 < 5]の結果がFALSE" & vbCrLf
    End If

End Sub

 

<マクロ実行結果>

And, Or, Notのマクロ実行結果

 

使用例2 : Eqv, Imp, Xorを使用した条件分岐

Eqv, Imp, Xor構文を用いたソースコードの例は下記の通りです。

<サンプルコード>

Sub sample()

    '比較用の変数を定義
    Dim num1 As Long
    Dim num2 As Long
    
    'Eqv演算子を用いた比較
    num1 = 2
    num2 = 4
    Debug.Print "num1 = " & num1 & " / num2 = " & num2
    
    'num1とnum2のどちらも5より小さい場合
    'または
    'num1とnum2のどちらも5より小くない(5以上の)場合はTRUE
    If num1 < 5 Eqv num2 < 5 Then
        'こちらが実行される
        Debug.Print "[num1 < 5 Eqv num2 < 5]の結果がTRUE" & vbCrLf
    Else
        Debug.Print "[num1 < 5 Eqv num2 < 5]の結果がFALSE" & vbCrLf
    End If


    'Imp演算子を用いた比較
    num1 = 2
    num2 = 6
    Debug.Print "num1 = " & num1 & " / num2 = " & num2

    'num1が5より小さくない(5以上の)場合
    'または
    'num2が5より小さい場合はTRUE
    If num1 < 5 Imp num2 < 5 Then
        Debug.Print "[num1 < 5 Imp num2 < 5]の結果がTRUE" & vbCrLf
    Else
        'こちらが実行される
        Debug.Print "[num1 < 5 Imp num2 < 5]の結果がFALSE" & vbCrLf
    End If


    'Xor演算子を用いた比較
    num1 = 2
    num2 = 6
    Debug.Print "num1 = " & num1 & " / num2 = " & num2

    'num1のみが5より小さい場合
    'または
    'num2のみが5より小さい場合TRUE
    If num1 < 5 Xor num2 < 5 Then
        'こちらが実行される
        Debug.Print "[num1 < 5 Xor num2 < 5]の結果がTRUE" & vbCrLf
    Else
        Debug.Print "[num1 < 5 Xor num2 < 5]の結果がFALSE" & vbCrLf
    End If

End Sub

 

<マクロ実行結果>

Eqv, Imp, Xorのマクロ実行結果

 

以上が論理演算子による条件分岐となります。

ここまでご覧いただきありがとうございました。

 

初心者におすすめの書籍はこちら

 

VBAに詳しくなりたい方におすすめの書籍はこちら

 

 

ABOUT ME
かめぞう
かめぞう
はじめまして。 かめぞうです。ソフトウェア開発会社に勤務する現役エンジニアです。私がエンジニアを続ける中で得た学び、考えを発信しています。リクエストや改善要望など、お気づきの点があればお気軽にご連絡ください。