更新日:、 作成日:
VBA StrComp 関数:文字列を比較する
はじめに
Excel VBA マクロの StrComp 関数から文字列を比較する方法を紹介します。
StrComp 関数は、文字列を比較して等しいかや大小を判定します。
A と A なら 0 を返します。
A と B なら -1 を返します。
B と A なら 1 を返します。
大文字と小文字を区別しないで比較したいときに使用します。
文字列を比較するには「文字列を比較する」をご覧ください。
StrComp 関数の引数と戻り値
StrComp(文字列1, 文字列2)
文字列1と文字列2を比較した結果を返します。
StrComp(文字列1, 文字列2, 比較モード)
比較モードで大文字と小文字を区別するか指定できます。
引数「文字列1」 | 文字列を指定します。 |
引数「文字列2」 | 文字列を指定します。 |
引数「比較モード」 | 省略できます。大文字と小文字を区別して比較するかを指定します。 |
戻り値の型 | 数値型 (Integer) |
引数「比較モード」
単位 | 説明 |
vbBinaryCompare (既定) | 「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。 |
vbTextCompare | 区別しない。 |
解説
比較した結果は次の値を返します。結果が 0 なら等しい、それ以外のときは等しくないを意味しています。
比較 | 結果 |
文字列1 < 文字列2 | -1 |
文字列1 = 文字列2 | 0 |
文字列1 > 文字列2 | 1 |
文字列1 か 2 が Null | Null |
文字の大小は文字コードの値で比較しています。大文字より小文字が大きい値です。先頭の文字から判定されるので文字数は関係ありません。比較演算子を使用したときも同じです。
「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