Like 演算子
2 つの文字列を比較するために使用します。
構文
結果 = stringLikeパターン
Like 演算子には、次の指定項目があります。
指定項目 | 説明 |
---|---|
result | 必須。任意の数値変数。 |
string | 必須。任意の文字列式です。 |
pattern | 必ず指定します。「解説」で説明されているパターン マッチング規則に準拠する任意の文字列式です。 |
解説
string が pattern に一致する場合、result は True になり、一致がない場合、result は False になります。 string または pattern のどちらかが Null の場合、result は Null になります。
Like 演算子の動作は、Option Compare ステートメントに依存します。 各モジュールの既定の文字列比較方法は Option Compare Binary です。
Option Compare Binary では、文字の内部バイナリ表現から導き出される並べ替え順序に基づいて文字列比較が行われます。 並べ替え順序は、コード ページによって決まります。
次の例は、通常のバイナリの並べ替え順序を示しています。
A < B < E < Z < a < b < e < z < À < Ê < Ø < à < ê < ø
Option Compare Text では、ユーザーのシステムのロケールによって決定される、大文字と小文字を区別しないテキストの並べ替え順序に基づいて文字列比較が行われます。 Option Compare Text を使用して、同じ文字列の並べ替えを行う場合、次のようなテキストの並べ替え順序が生成されます。
(A=a) < (À=à) < (B=b) < (E=e) < (Ê=ê) < (Z=z) < (Ø=ø)
組み込みのパターン マッチングには、文字列比較のためのさまざまな機能があります。 パターン マッチング機能では、ワイルドカード文字、文字のリスト、または文字の範囲を任意に組み合わせて使用し、文字列に一致させることができます。 次の表に、pattern に指定できる文字と、それに一致する文字を示します。
pattern 内の文字 | string 内の一致 |
---|---|
? | 任意の 1 文字。 |
* | 0 文字以上の文字。 |
# | 任意の 1 桁の数字 (0-9)。 |
[ charlist ] | charlist に含まれる任意の全角または半角の 1 文字。 |
[ !charlist ] | charlist に含まれない任意の全角または半角の 1 文字。 |
角かっこ ([ ]) で囲んだ 1 文字以上のグループ (charlist) を使用して、string 内の任意の 1 文字に一致させることができます。この文字グループには、数字を含め、ほぼすべての文字コードを含めることができます。
注:
特殊文字の左角かっこ ([)、疑問符 (?)、シャープ記号 (#)、およびアスタリスク (*) と一致させるには、それらを角かっこで囲みます。 右角かっこ自体に一致させるのに、右角かっこ (]) をグループ内で使用することはできませんが、個々の文字としてグループの外側で使用することはできます。
ハイフン (-) を使用して範囲の上限と下限を分離することで、charlist で文字の範囲を指定できます。 たとえば、[A-Z]
では、string 内の対応する文字位置に A から Z の範囲内の大文字が含まれる場合に一致します。 複数の範囲を、角かっこ内に区切り記号なしで含めることができます。
指定された範囲の意味は、実行時に有効となる文字の並び順 (Option Compare、およびコードが実行されているシステムのロケール設定により決定) に依存します。
Option Compare Binary の例を使用すると、範囲 [A-E]
は、A、B、E に一致します。Option Compare Text では、[A-E]
は、A、a、À、à、B、b、E、e に一致します。 この範囲は Ê または ê に一致しません。この並べ替え順序では、アクセント付き文字がアクセント記号のない文字の後にくるためです。
パターン マッチングに関する重要な規則は、他に次のようなものがあります。
- 感嘆符 (!) を charlist の前に置くと、string の中の charlist 以外の文字に一致します。 角かっこの外側で使用すると、感嘆符そのものに一致します。
- ハイフン (-) を charlist の先頭 (感嘆符を指定している場合にはその直後) または末尾に置いて、ハイフンそのものに一致させることができます。 それ以外の位置に置かれた場合は、ハイフンを使用して文字の範囲を示します。
- 文字の範囲を指定する場合、昇順 (小から大の方向) で指定する必要があります。
[A-Z]
は有効なパターンですが、[Z-A]
は無効です。 - 文字シーケンス
[]
は長さ 0 の文字列 ("") と見なされます。
一部の言語では、アルファベット内に、2 つの別々の文字を表す特殊文字があります。 たとえば、文字 "a" と "e" が同時に使用された場合にそれらの文字を表す文字 "æ" がいくつかの言語で使用されます。 Like 演算子はこの 1 文字の特殊文字および 2 つの個々の文字を同等のものとして認識します。
特殊文字を使用する言語がシステム ロケール設定に指定されている場合、pattern または string のどちらかに 1 文字の特殊文字が含まれていると、もう一方の文字列内にある同等の 2 文字シーケンスが一致します。 同様に、pattern 内に角かっこで囲まれた 1 文字の特殊文字が (単独で、またはリストあるいは範囲内に) 含まれる場合、string 内の同等の 2 文字シーケンスが一致します。
例
この例では、Like 演算子を使用して文字列をパターンと比較しています。
Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' Returns True.
MyCheck = "F" Like "[A-Z]" ' Returns True.
MyCheck = "F" Like "[!A-Z]" ' Returns False.
MyCheck = "a2a" Like "a#a" ' Returns True.
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' Returns True.
MyCheck = "BAT123khg" Like "B?T*" ' Returns True.
MyCheck = "CAT123khg" Like "B?T*" ' Returns False.
MyCheck = "ab" Like "a*b" ' Returns True.
MyCheck = "a*b" Like "a [*]b" ' Returns False.
MyCheck = "axxxxxb" Like "a [*]b" ' Returns False.
MyCheck = "a [xyz" Like "a [[]*" ' Returns True.
MyCheck = "a [xyz" Like "a [*" ' Throws Error 93 (invalid pattern string).
関連項目
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。