比較と真偽
今回の目標
説明
事前準備
事前準備として、セル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が格納されているとき、何と表示されるか。
- セルA1に10が格納されているとき、何と表示されるか。
- セルA1に文字列"テスト"が格納されているとき、何と表示されるか。
Sub Test_Compare1()
MsgBox Cells(1, 1) >= 10
End Sub
Sub Test_Compare2()
MsgBox Cells(1, 1) <> 10
End Sub
Sub Test_Compare3()
MsgBox Cells(1, 1) = "Test"
End Sub