VBA の文字列を比較する
VBA でさまざまなメソッドを使用して文字列を比較する方法を紹介します。
VBA の文字列を比較する
エクセルシートで作業しているときに、文字列を比較して、他の文字列よりも小さいまたは大きい文字列の結果を取得したい場合があります。VBA は、StrComp() と呼ばれるこの目的に最適なメソッドを提供します。このメソッドは、2つの文字列を比較して、結果を数値で取得します。
比較している両方の文字列が等しい場合、このメソッドは 0 を返します。最初の文字列が他の文字列よりも小さい場合、戻り値として -1 を取得します。
最初の入力文字列が他の文字列よりも大きい場合、結果として値 1 が取得されます。ユーザー入力文字列の 1つが空の場合、戻り値はヌルになります。
StrComp() メソッドでは 3つの比較メソッドが使用されますが、最も一般的に使用されるのは 2つだけであり、これら 2つのメソッドについて説明します。2つの文字列のバイナリを比較する場合は、vbBinaryCompare を使用できます。このメソッドでは大文字と小文字が区別されます。
両方の文字列のテキストを比較する場合は、大文字と小文字を区別しないメソッドである vbTextCompare を使用できます。例を挙げて、2つの文字列を比較してみましょう。
コード:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World"
compare = StrComp(stringOne, stringTwo)
MsgBox compare
End Sub
出力:

上記の例から、戻り値として 0 を取得したのと同じ文字列を渡しました。さまざまな値を渡して、どのような戻り値が得られるかを確認しましょう。
コード:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World!"
compare = StrComp(stringOne, stringTwo)
MsgBox compare
End Sub
出力:

上記のコードから、2 番目の文字列が最初の文字列よりも大きいため、戻り値として -1 を取得した長さのさまざまな文字列を渡しました。StrComp() の文字列比較メソッドを試して、同じ文字列を使用するが大文字と小文字が異なる場合に結果がどのように異なるかを確認し、vbTextCompare メソッドを使用してみましょう。
コード:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello WorLd"
compare = StrComp(stringOne, stringTwo, vbTextCompare)
MsgBox compare
End Sub
出力:

ここで、この例では、スペースを 1つ追加して、vbBinaryCompare メソッドを使用します。
コード:
# VBA
Sub test()
Dim compare As Integer
stringOne = "Hello World"
stringTwo = "Hello World"
compare = StrComp(stringOne, stringTwo, vbBinaryCompare)
MsgBox compare
End Sub
出力:

このように、StrComp() メソッドと vbTextCompare や vbBinaryCompare などの組み込みメソッドを使用して、長さまたはテキストに基づいて 2つの文字列を比較できます。