VBAで文字列の比較を行う(StrComp)

StrComp

StrComp関数は2つの文字列の比較を行い、比較結果を返します。

比較の際に比較元と比較先の文字列はそれぞれ文字コード値で比較されます。

比較結果は等しいか、大きいか、小さいか、の3つのいずれかが返却されます。

構文

Function StrComp(String1, String2, [Compare As VbCompareMethod = vbBinaryCompare])

String1 比較元の文字列を指定します。
String2 比較先の文字列を指定します。
Compare
省略可
VbCompareMethod列挙型で比較モードを指定します。

VbCompareMethod列挙型

定数 内容
vbBinaryCompare 0 バイナリモード(大文字と小文字、全角と半角、ひらがなとカタカナを区別する)
vbTextCompare 1 テキストモード(大文字と小文字、全角と半角、ひらがなとカタカナを区別しない)

省略時はバイナリモードで検索されます。

バイナリモードとテキストモードの違いは、大文字と小文字、全角と半角、ひらがなとカタカナを区別するかしないかです。

バイナリモードの場合は区別しますが、テキストモードの場合は区別しません。

Compare省略時の挙動

Compareを省略した場合はOption Compareステートメントでの設定内容が採用されます。

Option Compare Binaryであればバイナリモード、Option Compare Textであればテキストモードです。

Option Compareステートメントが未設定の場合はバイナリモード(vbBinaryCompare)が指定されます。

戻り値 比較結果を0(等しい)、1(不一致。比較元が大きい)、-1(不一致。比較元が小さい)、のいずれかが返されます。

文字列の比較方法

文字列の比較はバイナリモードとテキストモードによって比較方法が異なります。

バイナリモードの場合は文字コードの番号で比較され、テキストモードの場合はひらがなやカタナカや英字の順番で比較されます。

バイナリモードで”a”(10進数で97)と”b”(10進数で98)をStrCompで比較すると、-1が返却され、文字コードの97と98では97の”a”が小さいという結果になります。

同様に”A”(65)と”a”(97)を比較すると、-1が返却され、”A”が小さいという結果になります。

ところがテキストモードの場合に”A”(65)と”a”(97)を比較すると、0が返却され、一致とみなされます。

サンプルコード

“abc”と”ABC”をバイナリモードとテキストモードの両方で比較した場合のサンプルコードです。

バイナリモードの場合は不一致になりますが、テキストモードの場合は大文字と小文字は同じ扱いになるため比較一致になります。

関連記事

サブコンテンツ

このページの先頭へ