VBA 比較演算子(等しくない、大きい、小さい、等しい、その他)
VBAでは、比較演算子を使って値を比較することができます。これらの演算子を使用することで、値を比較し、結果としてブール値のTrueまたはFalseを返すことができます。
VBA の主な比較演算子
VBAで使用される主な比較演算子は次のとおりです。
比較演算子 |
説明 |
= |
に等しい |
<> |
と等しくない |
> |
より大きい |
>= |
以上 |
< |
より小さい |
<= |
以下 |
等しくない(<>)
等しくないを表す演算子は <> です。これは2つの値が等しくないかどうかを調べ、TRUEまたはFALSEを返します。これは 小さいと大きいを組み合わせた演算子です。
この例では、5が3と等しくないかどうかを調べ、MessageBoxにTrueを返します。
MsgBox 5 <> 3
セルの値が等しくない
数字を比較する方法はいくつかあります。前の例では、5 と 3 をハードコードしていました。ここでは、値を比較する他の2つの方法を紹介します。
この例では、2 つのセルの値が互いに等しくないかどうかをテストします。
MsgBox Range("A1").Value <> Range("B1").Value
値を比較するもう一つの方法は、変数を使用することです。
Sub NotEqualTo ()
Dim intA As Integer
Dim intB As Integer
Dim blnResult As Boolean
intA = 5
intB = 6
If intA <> intB Then
blnResult = True
Else
blnResult = False
End If
End Sub
この例では、整数型変数 intAが intBと等しくないかどうかをチェックしています。もしこれが正しければ、ブール変数 blnResultの値はTrueになり、そうでなければFalseになります。
このとき、If文の <>演算子を使用して、intAと intBの値が異なるかどうかをチェックします。
If intA <> intB Then
blnResult = True
Else
blnResult = False
End If
intAの値は5、intBの値は6で、変数が等しくないので、blnResultはTrueを返します。
等しい
等しい(=)演算子もまったく同じ働きをします。2つの値が等しいかどうかをチェックし、TrueまたはFalseを返します。以下はコードの例です。
Sub EqualTo()
Dim intA As Integer
Dim intB As Integer
Dim blnResult As Boolean
intA = 5
intB = 5
If intA = intB Then
blnResult = True
Else
blnResult = False
End If
End Sub
この例では、intAが intBと等しいかどうかをチェックしています。もしこれが正しければ、ブール値blnResultの値はTrueになり、そうでなければFalseになります。
まず、intAとintBの値を 5 に設定します。
intA = 5
intB = 5
その後、If文の =演算子を使って、intAと intBの値が等しいかどうかを調べます。
If intA = intB Then
blnResult = True
Else
blnResult = False
End If
両方の変数がそれぞれ5と等しいので、blnResultはTrueを返します。
大きい / 小さい
より大きい(>) と より小さい(<) 演算子も全く同じように動作します。
より大きい
MsgBox 5 > 3
より小さい
MsgBox 5 < 3
以上 / 以下
ある値が、以上、あるいは以下であるかどうかを調べるには、等しい (=) 演算子と 大きい (>) / 小さい (<) 演算子を組み合わせます。
以上(大きいまたは等しい)
MsgBox 5 >= 3
以下(小さいまたは等しい)
MsgBox 5 <= 3
今までと同じ手順で、以上(>=)を使ってみましょう。
Sub GreaterThanEqualTo ()
Dim intA As Integer
Dim intB As Integer
Dim blnResult As Boolean
intA = 5
intB = 5
If intA >= intB Then
blnResult = True
Else
blnResult = False
End If
End Sub
この例では、intAが intB以上かどうかを調べます。これが正しければ、ブール値blnResultの値はTrueになり、そうでなければFalseになります。
If文の>=演算子を使用して、intAの値が intB より大きいか等しいかどうかを調べます。
If intA >= intB Then
blnResult = True
Else
blnResult = False
End If
結論から言うと、両方の変数が5に等しいので、blnResultはTrueを返します。
Is演算子
Is演算子は、2つのオブジェクト変数が同じオブジェクトを含むかどうかをテストします。
Sub CompareObjects()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
If ws1 Is ws2 Then
MsgBox "同じワークシートです"
Else
MsgBox "異なるワークシートです"
End If
End Sub
Like 演算子
Like演算子を使用すると、完全ではない文字列のマッチを見つけることができます。この例では、ある文字列が “Mr.” で始まっているかどうかを調べます。
Sub LikeDemo()
Dim strName As String
Dim blnResult As Boolean
strName = "Mr. Michael James"
If strName Like "Mr*"Then
blnResult = True
Else
blnResult = False
End If
End Sub
文字列を比較する方法を学びたい方はこちら:VBA 文字列の比較 – StrComp
論理演算子の使い方を学びたい方はこちら:VBA 論理演算子