比較と真偽

今回の目標

  • 真と偽を理解する
  • 以上や以下等を比較することができるようになる

説明

事前準備

事前準備として、セルA1に[10]を入力してください。
今回はこのセルA1を用いて説明します。

真偽とは?

条件に合っているときに「真」、条件に一致していない場合に「偽」といいます。これらを合わせて、真偽(真と偽)と呼びます。
漠然とした説明のため例を挙げます。10と100はどちらが大きいかと聞かれたら、100の方が大きいです。学生の頃に学んだ「10<100」となるわけです。
この「10<100」は正しい状態なので、「真」と呼びます。逆に「10>100」は正しくないので「偽」と呼びます。
これをExcelVBA風に考えてみましょう。「セルA1は100より大きい数値が格納されているか」と調べることができます。上記の事前準備で、A1に10が入っていますので、「セルA1(つまり10)<100」は正しくなく、「偽」であるといえます。

比較演算子

比較するときの記号を比較演算子と呼びます。
例えば、10<100の「<」です。
vbaでは、下記表の通り記号を書く必要があります。

記号意味
=右辺と左辺が等しい時、真を返す。
等しくない場合は偽を返す。
<>右辺と左辺が等しくない時、真を返す。
等しい場合は偽を返す。
<左辺が右辺より大きい時、真を返す(≦と同義)。
左辺が右辺以下の場合は偽を返す。
<=左辺が右辺以上の時、真を返す。
左辺が右辺未満の場合は偽を返す
>右辺が左辺より大きい時、真を返す。
右辺が左辺以下の場合は偽を返す。
>=右辺が左辺以下の時、真を返す(≧と同義)。
左辺が右辺未満なら偽を返す。

上記表の通り、「≦」や「≧」を「<=」や「>=」で書き表します。
等しいか等しくないかは「=」と「<>」で表します。

下記のサンプルはセルA1が100未満か調べるプログラムです。
A1が10以下の数値の場合は「True」と表示され、100以上の数値か文字が入力されている場合「False」と表示されます。
事前準備で、セルA1に10が格納されているため「True」と表示されます。

' セルA1は100未満なら、Trueと表示される
Sub Sample_Compare1()
    MsgBox Cells(1, 1) < 100    ' Boolean型の変数に値を代入
End Sub

下記のサンプルはセルA1が100以上か調べるプログラムです。
A1が100以上の数値の場合は「True」と表示され、100未満の数値か文字が入力されている場合「False」と表示されます。
事前準備で、セルA1に10が格納されているため「False」と表示されます。

' セルA1は100以上なら、Trueと表示される
Sub Sample_Compare2()
    MsgBox Cells(1, 1) >= 100    ' Boolean型の変数に値を代入
End Sub

下記のサンプルはセルA1が100か調べるプログラムです。
A1が100の場合は「True」と表示され、100でない場合「False」と表示されます。
事前準備で、セルA1に10が格納されているため「False」と表示されます。

' セルA1が100なら、Trueと表示される
Sub Sample_Compare3()
    MsgBox Cells(1, 1) = 100    ' Boolean型の変数に値を代入
End Sub

変数に真偽を格納する

変数に審議の結果を格納することができます。
変数の型名は「Boolean」形で、TrueとFalseのみ格納できます。
初心者向きではないため、記憶にとどめておく程度でOKです。

Sub Sample_Compare4()
    Dim Buf As Boolean         ' Boolean型の変数作成
    Buf = Cells(1, 1) < 100    ' Boolean型の変数に値を代入
    MsgBox Buf                 ' Boolean型の変数の値を表示
End Sub

確認テスト

次の問いに答えなさい。

  1. セルA1に10が格納されているとき、何と表示されるか。

    Sub Test_Compare1()
        MsgBox Cells(1, 1) >= 10
    End Sub
    

    【解答】

    True

    【解説】

    問題文を言い換えると「セルA1(=10)は10以上か?」となります。
    セルA1の10は10以上ですので、真となり"True"と表示されます。

  2. セルA1に10が格納されているとき、何と表示されるか。

    Sub Test_Compare2()
        MsgBox Cells(1, 1) <> 10
    End Sub
    

    【解答】

    False

    【解説】

    問題文を言い換えると「セルA1(=10)は10でない状態か?」となります。
    セルA1は10ですので、偽となり"False"と表示されます。

  3. セルA1に文字列"テスト"が格納されているとき、何と表示されるか。

    Sub Test_Compare3()
        MsgBox Cells(1, 1) = "Test"
    End Sub
    

    【解答】

    False

    【解説】

    問題文を言い換えると「セルA1は文字列"test"が入力されているか?」となります。 セルA1には"テスト"が入力されており、"test"ではありません。
    そのため、偽となり"False"と表示されます。

関連リンク

ページの先頭へ