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
かめぞう
はじめまして。 かめぞうです。組込ソフトウェア開発会社に勤務する現役エンジニアをしています。私が買ってよかったもの、人生設計、サラリーマン生活についてなど、テーマを絞らず発信しています。リクエストや改善要望など、お気軽にご連絡ください。