目標
VBAの論理演算子について理解し利用できる
演算子には算術演算子・比較演算子・論理演算子・代入演算子・連結演算子があります。この記事では制御構文で複数の条件を用いるときに利用される論理演算子ついて記載しています。
論理演算子の概要と利用方法
論理演算子とは
言葉で表現すると「複数の条件の成立関係(複数のTrueとFalse)から組み合せによる総合的な判定(True/False)をしてくれるもの」です。例えば条件が3つ存在していて「その3つに当てはまる」とか「いずれか1つでも当てはまる」のような確認をしてくれます。
条件に用いられる「論理演算子」
ここは押さえよう
If Thenステートメントでよく利用される論理演算子としては以下の3つ
- Or演算子…条件のいずれかに当てはまる場合は「真」
- And演算子…全ての条件に当てはまる場合のみ「真」
- Not演算子…条件の否定が「真」
具体的には
X >= 5 Or Y >= 5 であれば、XかYのいづれかが5以上の場合が「真」
X >= 5 And Y >= 5 であれば、Xが5以上でYも5以上の場合が「真」
Not X =5 であれば、Xが5でなければ「真」
余力があれば押さえよう
Xor演算子…条件のいずれか一方が当てはまる場合は「真」
具体的には
X >= 5 Xor Y >= 5 であれば、Xが5以上とYも5以上のいずれかのみが当てはまるの場合が「真」
その他の論理演算子
Eqv演算子…二つの条件の結果が同じ場合は「真」
Imp演算子…一つ目の条件が当てはまらない、もしくは二つ目の条件が当てはまる場合は「真」
論理演算の真理値表
演算子 Or (論理和)
条件のいづれかが成立していれば結果は成立となります。
条件1 | 条件2 | 得られる結果 |
不成立 | 不成立 | 不成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
成立 | 成立 | 成立 |
演算子 And (論理積)
条件のいづれも成立している場合に結果は成立となります。
条件1 | 条件2 | 得られる結果 |
不成立 | 不成立 | 不成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
成立 | 成立 | 成立 |
演算子 Not (否定)
条件の成立と不成立を反転させた結果となります。
条件1 | 得られる結果 |
不成立 | 成立 |
成立 | 不成立 |
演算子 Xor (排他的論理和)
条件のいづれか一つが成立している場合に結果は成立となります。
条件1 | 条件2 | 得られる結果 |
不成立 | 不成立 | 不成立 |
成立 | 不成立 | 成立 |
不成立 | 成立 | 成立 |
成立 | 成立 | 不成立 |
演算子 Eqv (論理等価)
条件それぞれの結果が一致している場合に結果は成立となります。
条件1 | 条件2 | 得られる結果 |
不成立 | 不成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 不成立 |
成立 | 成立 | 成立 |
演算子 Imp (論理包含)
一つ目の条件が不成立、もしくは二つ目の条件が成立している場合に結果は成立となります。
条件1 | 条件2 | 得られる結果 |
不成立 | 不成立 | 成立 |
成立 | 不成立 | 不成立 |
不成立 | 成立 | 成立 |
成立 | 成立 | 成立 |
論理演算子を利用した条件を書いてみる(利用方法)
セルB3の値が「80以上」かつ、セルC3の値が「80以上」の場合 |
Sub logicalOperator1()
Dim Num1 As Integer
Dim Num2 As Integer
Worksheets("sheet2").Select
Num1 = Range("B3").Value
Num2 = Range("C3").Value
If Num1 >= 80 And Num2 >= 80 Then
MsgBox "両方の条件をクリアしています。"
Else
MsgBox "And演算の結果に合いません"
End If
End Sub
実行結果の例
B3に「76」、C3に「88」が入力されているとき
セルB3の値が「80以上」または、セルC3の値が「80以上」の場合 |
Sub logicalOperator2()
Dim Num1 As Integer
Dim Num2 As Integer
Worksheets("sheet2").Select
Num1 = Range("B3").Value
Num2 = Range("C3").Value
If Num1 >= 80 Or Num2 >= 80 Then
MsgBox "何れかの条件をクリアしています。"
Else
MsgBox "Or演算の結果に合いません"
End If
End Sub
実行結果の例
B3に「76」、C3に「88」が入力されているとき
セルD3の値が空でない場合 |
Sub logicalOperator3()
Dim str As String
Worksheets("sheet2").Select
str = Range("B3").Value
If Not str = "" Then
MsgBox "何れかの条件をクリアしています。"
Else
MsgBox "Not演算の結果に合いません"
End If
End Sub
実行結果の例
B3、C3共に入力がない空の状態
入力ボックスのいずれか一方のみが空の場合 |
Sub logicalOperator4()
Dim str1 As String
Dim str2 As String
Worksheets("sheet2").Select
str1 = InputBox("1つ目の入力ボックスです。何か入力してください。")
str2 = InputBox("2つ目の入力ボックスです。何か入力してください。")
If str1 = "" Xor str2 = "" Then
MsgBox "条件をクリアしています。"
Else
MsgBox "Xor演算の結果に合いません"
End If
End Sub
実行結果の例
入力ボックスの1つ目で「test」を入力(何かしらを入力した状態)
入力ボックスの2つ目では入力なし
出力結果
今回は以上となります。
ブックマークのすすめ
「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。