VBAのような演算子
LikeはVBAの演算子であり、これは文字列のセット内の引数として指定された文字列を比較し、パターンと一致する比較演算子です。パターンが一致する場合、得られる結果はtrueであり、パターンが一致しない場合、得られた結果はfalseです。これはVBAに組み込まれている演算子です。
「LIKE」演算子は、そのすばらしい使用法にもかかわらず、最も使用されていない演算子です。コーディングでこの演算子を十分に使用している人はあまり見たことがありません。実際、私はこの演算子をあまり使用しない人の1人です。「VBALIKE」演算子を使用すると、文字列のパターンを文字列全体と照合できます。VBA LIKE演算子を使用すると、2つの文字列を指定されたパターンと比較できます。文字列にVBAの部分文字列が含まれているかどうかを確認したり、文字列に特定の形式が含まれているかどうかを確認したりできます。パターンが文字列と一致する場合、VBALIKE演算子はTRUEまたはFALSEを返します。
文字列を照合するときは、指定するパターンにワイルドカード文字を使用する必要があります。以下は、VBALIKE演算子で使用するワイルドカードです。
- 質問マーク(?):これは、文字列の任意の1文字を照合するために使用されます。たとえば、文字列「CAT」があり、パターンが「C?T」の場合、VBALIKE演算子はTRUEを返します。文字列が「CATCH」でパターンが「C?T」の場合、VBALIKE演算子はFALSEを返します。
- アスタリスク(*):これは0個以上の文字に一致します。たとえば、文字列が「Good」でパターンが「G ** d」の場合、VBALIKE演算子はTRUEを返します。
- 角かっこ([]):これは角かっこで指定された任意の1文字に一致します。
- [Char-Char]:これはChar-Charの範囲内の任意の1文字に一致します。
- [!Chars]:これはリストにない任意の1文字に一致します。
- [!Char-Char]:これはChar-Charの範囲外の任意の1文字に一致します。
VBALIKE演算子の例
ここで、VBALIKE演算子の例をいくつか見てみましょう。
このVBALike Excelテンプレートはここからダウンロードできます– VBA LikeExcelテンプレート
例1-疑問符付き
コード:
Sub QuestionMark_Example1()Dim k As String k = "Good" If k Like "Go?d" Then MsgBox "Yes" Else MsgBox "No" End If End Sub
上記のコードでは、文字列を「Good」として指定し、パターンは「Go?d」です。疑問符は1つの文字に一致する可能性があるため、結果は「はい」と表示されます。
文字列を「おはよう」に変更します。
コード:
Sub QuestionMark_Example1()Dim k As String k = "Good Morning" If k Like "Go?d" Then MsgBox "Yes" Else MsgBox "No" End If End Sub
この場合、文字列にもう1つの単語、つまり朝を追加したため、「いいえ」と表示されます。任意の数の文字に一致させるには、アスタリスクを使用する必要があります。
例2–アスタリスクあり
コード:
Sub QuestionMark_Example2()Dim k As String k = "Good Morning" If k Like "* Good *" Then MsgBox "Yes" Else MsgBox "No" End If End Sub
上記の例では、文字「* Good *」の前後に2つのアスタリスクを追加しました。これは、文字列「GoodMorning」の「Good」という単語と一致し、「Yes」を返します。
例3–ブラケット付き[]
コード:
Sub QuestionMark_Example3()Dim k As String k = "Good Morning" If k Like "* [M] *" Then MsgBox "Yes" Else MsgBox "No" End If End Sub
上記のコードは、角かっこ「M」に記載されている1文字と一致し、結果を「はい」として返します。
例4–ブラケットとアルファベットを使用[AZ]
コード:
Sub QuestionMark_Example4()Dim k As String k = "Good Morning" If k Like "* [AD] *" Then MsgBox "Yes" Else MsgBox "No" End If End Sub
上記では、AからDに一致する文字について説明しました。
文字列「GoodMorning」にAからDまでの文字がないため、これは「No」を返します。
パターンを[AH]に変更します
コード:
Sub QuestionMark_Example4()Dim k As String k = "Good Morning" If k Like "* [AH] *" Then MsgBox "Yes" Else MsgBox "No" End If End Sub
AからHまで、文字列「GoodMorning」に文字「G」があるため、これは「Yes」を返します。
このように、VBAの「LIKE」演算子を使用して、パターンの任意の文字列をワイルドカード文字と照合できます。