比較と真偽

今回の目標

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

    事前準備

    事前準備として、セル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が格納されているとき、何と表示されるか。
    2. Sub Test_Compare1()
          MsgBox Cells(1, 1) >= 10
      End Sub
      
    3. セルA1に10が格納されているとき、何と表示されるか。
    4. Sub Test_Compare2()
          MsgBox Cells(1, 1) <> 10
      End Sub
      
    5. セルA1に文字列"テスト"が格納されているとき、何と表示されるか。
    6. Sub Test_Compare3()
          MsgBox Cells(1, 1) = "Test"
      End Sub
      
    解答1 解答2 解答3

    関連リンク

    次ページ:If文

    前ページ:条件分岐とは

    ページの先頭へ