01-VBA

演算子|Excel VBA (Part.5)【論理演算子】| 現役エンジニア&プログラミングスクール講師

目標

VBAの論理演算子について理解し利用できる

演算子には算術演算子・比較演算子・論理演算子・代入演算子・連結演算子があります。この記事では制御構文で複数の条件を用いるときに利用される論理演算子ついて記載しています。

論理演算子の概要と利用方法

論理演算子とは

言葉で表現すると「複数の条件の成立関係(複数のTrueとFalse)から組み合せによる総合的な判定(True/False)をしてくれるもの」です。例えば条件が3つ存在していて「その3つに当てはまる」とか「いずれか1つでも当てはまる」のような確認をしてくれます。

条件に用いられる「論理演算子」

ここは押さえよう

If Thenステートメントでよく利用される論理演算子としては以下の3つ

  1.  Or演算子…条件のいずれかに当てはまる場合は「真」
  2.  And演算子…全ての条件に当てはまる場合のみ「真」
  3.  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つ目では入力なし

出力結果

今回は以上となります。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

制御構文|Excel VBA (Part.2)【If Then】基本編 | 現役エンジニア&プログラミングスクール講師

2022年11月10日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

初めてのExcelVBA:開発タブの表示 | 現役エンジニア&プログラミングスクール講師

2022年8月5日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

演算子|Excel VBA (Part.3)【比較演算子】応用編(前編)| 現役エンジニア&プログラミングスクール講師

2022年10月27日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

制御構文|Excel VBA (Part.9)【Do Loop】基本編 | 現役エンジニア&プログラミングスクール講師

2022年11月30日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「Worksheetsプロパティ」と「Sheetsプロパティ」の違いと「Excelの持つシートの種類」| 現役エンジニア&プログラミングスクール講師

2022年12月21日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の ユーザーフォーム編(Part.1~Part.17)システム作成 | 現役エンジニア&プログラミングスクール講師

2024年1月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site