VBA Like演算子
VBAでは、Like演算子を使って2つの文字列を比較することができます。 Like演算子を使用して 2 つの文字列を比較し、文字列の一致を確認することができます。このチュートリアルでは、この演算子をさまざまなパターンで使用する方法について学習します。
VBAで文字列を比較する方法を学びたい場合はこちら:VBA 文字列の比較 – StrComp
比較演算子の使い方を学びたい場合はこちら:VBAの比較演算子 – Not Equal to & More
Like演算子を使って2つの文字列を比較する
Like 演算子を使用すると、文字列が特定のテキストで始まるかどうか、またはそれを含むかどうかなどをチェックできます。デフォルトでは、 Like演算子は Binary メソッドを使用して文字を比較します。つまりこれは、この演算子が大文字小文字を区別することを意味します。大文字小文字を区別しないようにしたい場合は、 モジュールの先頭にOption Compare Textを記述します。その場合、 Like演算子は “S “と “s “を同じ文字と見なします。この記事では、デフォルトの状態である大文字と小文字を区別することを前提として説明します。
マッチングが存在する場合、Like演算子は結果としてTrueを返し、そうでない場合はFalseを返します。
まず、文字列変数がMrで始まっているかどうかをチェックする簡単な例を見てみましょう。これを行うには、マッチするテキスト(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
この例では、文字列strNameが Mrで始まるかどうかをチェックし、変数blnResultにTrueまたはFalseを返すことにしましょう。 まず、strNameの値をMr. Michael Jamesに設定します。
strName = "Mr. Michael James"
次に、If文の中でLike演算子を使用します。
If strName Like "Mr*" Then
blnResult = True
Else
blnResult = False
End If
strNameが Mrで始まっているので、blnResultはTrueを返します。
画像1. Like演算子を使って、文字列が特定の文字で始まっているかどうかをチェックする
異なるマッチングパターンでLike演算子を使用する
Like演算子は、異なるパターンに基づいて2つの文字列のマッチングをチェックすることができます。以下は、可能なマッチングパターンのリストです。
パターンコード |
マッチングの種類 |
* |
0文字以上にマッチ |
? |
1文字にマッチ |
# |
一桁の数字にマッチ |
[chrs] |
chrs中の1文字にマッチ |
[A-Z] |
アルファベットの大文字にマッチ |
[A-Za-z] |
アルファベットの任意の文字にマッチ |
[!chars] |
chars中に含まれない1文字にマッチ |
では、これらのパターンをコードでどのように使うか見てみましょう。以下は、複数のパターンを使用する場合の例です。
1つの文字にマッチ
strText1 = "ABCDE"
If strText1 Like "AB?DE" Then
blnResult1 = True
Else
blnResult1 = False
End If
1桁の数字にマッチ
strText2 = "AB7DE"
If strText2 Like "AB#DE " Then
blnResult2 = True
Else
blnResult2 = False
End If
アルファベットの大文字にマッチ
strText3 = "ABCDE"
If strText3 Like "AB[A-Z]DE" Then
blnResult3 = True
Else
blnResult3 = False
End If
アルファベットの大文字とマッチしない
strText4 = "AB7DE"
If strText4 Like "AB[!A-Z]DE" Then
blnResult4 = True
Else
blnResult4 = False
End If
アルファベットの任意の文字(大文字、小文字)にマッチ
strText5 = "ABcDE"
If strText5 Like "AB[A-Za-z]DE" Then
blnResult5 = True
Else
blnResult5 = False
End If
コードを実行すると、Like演算子が比較のたびにblnResult 変数にTrueを返していることがわかります。
画像2. 異なるマッチングパターンでLike演算子を使用