教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA 演算子】論理演算子の使い方について知りたいです。教えて!

構文

論理演算子は以下の3つがあります。

演算子 意味
And かつ
Or または
Not 否定

これらの論理演算子は、条件文の中で使用され、条件文が成立するかどうかを判断する際に使用されます。それぞれの論理演算子の解説を以下に示します。

And

Andは、2つの条件が両方とも成立する場合にTrue(真)を返します。逆に、どちらか一方でも成立しない場合にFalse(偽)を返します。Andの構文は以下の通りです。

条件1 And 条件2
Or

Orは、2つの条件のうち、どちらか一方が成立すればTrue(真)を返します。両方が成立しない場合にFalse(偽)を返します。Orの構文は以下の通りです。

条件1 Or 条件2
Not

Notは、条件が成立しない場合にTrue(真)を返します。条件が成立する場合にはFalse(偽)を返します。Notの構文は以下の通りです。

Not 条件

使い方

論理演算子は、条件文の中で使用されます。条件文は、IfステートメントやDo Whileループなどの制御フローにおいて使用されます。以下に、論理演算子の使い方について解説します。

Andの使い方

Andを使用する場合は、2つの条件文をAndでつなぎます。以下に例を示します。

If score >= 60 And score < 80 Then
    '何か処理を行う
End If

この例では、scoreが60以上80未満の場合に処理を行います。

Orの使い方

Orを使用する場合は、2つの条件文をOrでつなぎます。以下に例を示します。

If age < 18 Or age >= 65 Then
    '何か処理を行う
End If

この例では、ageが18未満または65以上の場合に処理を行います。

Notの使い方

Notを使用する場合は、条件文の前にNotを付けます。以下に例を示します。

If Not isSuspended Then
    '何か処理を行う
End If

この例では、isSuspendedがFalse(偽)の場合に処理を行います。

プログラミング例

以下に、論理演算子を使用したプログラミング例を示します。

Andを使用した例
Sub AndExample()
    Dim score As Integer
    score = 75
    If score >= 60 And score < 80 Then
        MsgBox "合格です"
    Else
        MsgBox "不合格です"
    End If
End Sub

このプログラムは、変数scoreの値が60以上80未満である場合に「合格です」というメッセージを表示し、それ以外の場合に「不合格です」というメッセージを表示します。

Orを使用した例
Sub OrExample()
    Dim age As Integer
    age = 20
    If age < 18 Or age >= 65 Then
        MsgBox "割引対象です"
    Else
        MsgBox "割引対象外です"
    End If
End Sub

このプログラムは、変数ageの値が18未満または65以上である場合に「割引対象です」というメッセージを表示し、それ以外の場合に「割引対象外です」というメッセージを表示します。

Notを使用した例
Sub NotExample()
    Dim isSuspended As Boolean
    isSuspended = False
    If Not isSuspended Then
        MsgBox "ご利用いただけます"
    Else
        MsgBox "ご利用いただけません"
    End If
End Sub

このプログラムは、変数isSuspendedがFalse(偽)である場合に「ご利用いただけます」というメッセージを表示し、True(真)の場合に「ご利用いただけません」というメッセージを表示します。

まとめ

ExcelVBAにおける論理演算子は、条件文の中で使用され、条件文が成立するかどうかを判断するために使用されます。Andは、2つの条件が両方とも成立する場合にTrue(真)を返し、Orは、どちらか一方が成立する場合にTrue(真)を返します。Notは、条件が成立しない場合にTrue(真)を返します。論理演算子を上手に使いこなすことで、プログラムの制御フローを柔軟に制御することができます。