比較と真偽
今回の目標
- 真(True)と偽(False)を理解する
- 以上や以下等を比較することができるようになる
説明
事前準備
        事前準備として、セル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
確認テスト
        次の問いに答えなさい。
        
    
- 
            セルA1に10が格納されているとき、何と表示されるか。 Sub Test_Compare1() MsgBox Cells(1, 1) >= 10 End Sub【解答】 True 【解説】 問題文を言い換えると「セルA1(=10)は10以上か?」となります。 
 セルA1の10は10以上ですので、真となり"True"と表示されます。
- 
            セルA1に10が格納されているとき、何と表示されるか。 Sub Test_Compare2() MsgBox Cells(1, 1) <> 10 End Sub【解答】 False 【解説】 問題文を言い換えると「セルA1(=10)は10でない状態か?」となります。 
 セルA1は10ですので、偽となり"False"と表示されます。
- 
            セルA1に文字列"テスト"が格納されているとき、何と表示されるか。 Sub Test_Compare3() MsgBox Cells(1, 1) = "Test" End Sub【解答】 False 【解説】 問題文を言い換えると「セルA1は文字列"test"が入力されているか?」となります。 セルA1には"テスト"が入力されており、"test"ではありません。 
 そのため、偽となり"False"と表示されます。
