本記事の内容
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
<マクロ実行結果>

使用例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
<マクロ実行結果>

以上が論理演算子による条件分岐となります。
ここまでご覧いただきありがとうございました。
初心者におすすめの書籍はこちら
VBAに詳しくなりたい方におすすめの書籍はこちら