比較演算子で文字列を比較する

Microsoft Office 2000/Visual Basic プログラマーズ ガイド   

2 つの文字列を比較するとき、実際には ANSI 値を比較しているため、> (より大きい)、< (より小さい)、= (等しい) など、数式で使う比較演算子を使用できます。数値の比較演算子のほかに、特に文字列の比較に使われる Like 演算子を使用することも可能です。Like 演算子を使用するとき、ワイルドカード文字が含まれる文字列を比較することも可能です。

比較演算子を使用する

文字列比較に、> (より大きい)、および < (より小さい) などの比較演算子を使用する場合、モジュールの文字列比較の設定によって結果は異なります。次の例を参照してください。

  "vba" > "VBA"

文字列比較の設定が Option Compare Binary である場合、比較の結果として True が返されます。

VBA でバイナリ ベースの比較を実行するとき、文字列の中でそれぞれ対応する位置のバイナリ値が、異なる値が見つかるまで比較されます。この例では、小文字の "v" は ANSI 値の 118 に対応し、大文字の "V" は ANSI 値の 86 に対応します。118 は 86 より大きい数値であるため、比較の結果として True が返されます。

メモ   ANSI 値および対応する文字の表については、Visual Basic リファレンス ヘルプの [キーワード] タブで "ANSI" を選択して、関連するトピックを参照してください。

文字列比較の設定が Option Compare Text の場合、"vba" > "VBA" では False が返されます。

Access データベースで、文字列比較の設定が Option Compare Database であり、[新規データベースの並び順序] オプションが既定の [日本語] に設定されている場合、文字列比較では大文字と小文字の区別はなく、上の例では False が返されます。

Like 演算子を使用する

Like 演算子を使用して、ワイルドカードを使用した文字列比較を実行できます。次の表では、VBA で使用可能なワイルドカード文字が示されています。

ワイルドカード 意味
* 任意の数の文字 t* の場合、"t" で始まるすべての単語に一致します。
? 任意の単一文字 t??t の場合、"t" で始まり "t" で終わるすべての 4 文字の単語に一致します。
# 任意の 1 桁の数字 (0 ~ 9) 1#3 の場合、"1" で始まり "3" で終わるすべての 3 桁の数値に一致します。
[charlist] charlist の範囲に含まれる任意の単一文字 [a-z] の場合、"a" から "z" の範囲に含まれるすべての文字に一致します (大文字と小文字の区別は、Option Compare の設定によって決定されます)。
[!charlist] charlist の範囲に含まれない任意の単一文字 [!A-Z] の場合、大文字の英文字は除外されます (大文字と小文字の区別は、Option Compare の設定によって決定されます)。

Like 演算子を使用して、データ認証またはワイルドカードによる検索を実行することができます。たとえば、ユーザーが電話番号を nnn-nnn-nnnn の形式で入力したことを確認すると想定します。次のように Like 演算子を使用して、入力内容が有効であることを確かめることができます。

  Function ValidPhone(strPhone As String) As Boolean
   ' このプロシージャは、渡された値が、適切な電話番号の形式で
   ' 入力された有効な値であることを確認します。
   
   ValidPhone = strPhone Like "###-###-####"
End Function

このプロシージャは文字列内の文字を比較して、特定の位置に数値が含まれることを確認します。すべての文字が 0 ~ 9 の 1 桁の数字、またはハイフンである場合、結果が True になります。また、ハイフンは正しい位置に配置されている必要があります。このプロシージャは、Office 2000 Developer CD-ROM の ODETools\V9\Samples\ODETools\V9\Samples\OPG\Samples\CH07 サブフォルダに含まれる VBA.mdb の modStrings モジュールにあります。