更新日:、 作成日:

VBA StrComp 関数:文字列を比較する

はじめに

Excel VBA マクロの StrComp 関数から文字列を比較する方法を紹介します。

StrComp 関数は、文字列を比較して等しいかや大小を判定します。

AA なら 0 を返します。

AB なら -1 を返します。

BA なら 1 を返します。

大文字と小文字を区別しないで比較したいときに使用します。

文字列を比較するには「文字列を比較する」をご覧ください。

StrComp 関数の引数と戻り値

StrComp(文字列1, 文字列2)
文字列1文字列2を比較した結果を返します。

StrComp(文字列1, 文字列2, 比較モード)
比較モードで大文字と小文字を区別するか指定できます。

引数「文字列1」文字列を指定します。
引数「文字列2」文字列を指定します。
引数「比較モード」省略できます。大文字と小文字を区別して比較するかを指定します。
戻り値の型数値型 (Integer)

引数「比較モード」

単位 説明
vbBinaryCompare (既定)「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。
vbTextCompare区別しない。

解説

比較した結果は次の値を返します。結果が 0 なら等しい、それ以外のときは等しくないを意味しています。

比較 結果
文字列1 < 文字列2-1
文字列1 = 文字列20
文字列1 > 文字列21
文字列1 か 2 が NullNull

文字の大小は文字コードの値で比較しています。大文字より小文字が大きい値です。先頭の文字から判定されるので文字数は関係ありません。比較演算子を使用したときも同じです。

Asc 関数」を使用して、文字コードを取得できます。

比較演算子」の =<> で比較すると大文字と小文字などを区別します。

引数「比較モード」が vbTextCompare なら、区別しないで比較できます。

自作のソートアルゴリズムを使うときなどに使用できます。

使用例

StrComp 関数の使用例を紹介します。

文字列を比較する

文字列を比較します。

Dim i As Integer

i = StrComp("ABC", "ABC")
Debug.Print(i) ' 0、等しい

i = StrComp("ABC", "abc")
Debug.Print(i)  ' -1、0 以外は等しくない

i = StrComp("A", "B")
Debug.Print(i) ' -1、小さい

i = StrComp("B", "A")
Debug.Print(i)  ' 1、大きい

i = StrComp("A", "a")
Debug.Print(i) ' -1、小さい

i = StrComp("a", "A")
Debug.Print(i)  ' 1、大きい

i = StrComp("", "B")
Debug.Print(i) ' -1、小さい、文字がないときは小さいになる

i = StrComp("BB", "BBB")
Debug.Print(i) ' -1、小さい、2 文字目まで同じ、3 文字目がないので小さいになる

i = StrComp("BB", "BAB")
Debug.Print(i)  ' 1、大きい、2 文字目の B と A で大きいになる

i = StrComp("BB", "BCB")
Debug.Print(i) ' -1、小さい、2 文字目の B と C で小さいになる

大文字と小文字を区別しないで比較する

大文字と小文字を区別しないで比較します。

Dim i As Integer

i = StrComp("ABC", "abc", vbBinaryCompare) ' 区別する
Debug.Print(i) ' -1

i = StrComp("ABC", "abc", vbTextCompare)   ' 区別しない
Debug.Print(i) ' 0

i = StrComp("アイウ", "アイウ", vbBinaryCompare) ' 区別する
Debug.Print(i) ' -1

i = StrComp("アイウ", "アイウ", vbTextCompare)   ' 区別しない
Debug.Print(i) ' 0

i = StrComp("あいう", "アイウ", vbBinaryCompare) ' 区別する
Debug.Print(i) ' -1

i = StrComp("あいう", "アイウ", vbTextCompare)   ' 区別しない
Debug.Print(i) ' 0