StrComp関数の使い道

Option Compare Text もしくは Option Compare Binary は宣言されたモジュール内で有効です。
文字列同士の比較をした場合、デフォルトでOption Compareに従って比較がされます。
Option Compare Textの場合には、英数字の大文字と小文字を区別しませんが、
Option Compare Binaryの場合には、英数字の大文字と小文字を区別します。

では、Option Compare での宣言とは違う方法で文字列を比較するにはどうしたらよいのでしょうか?
Text比較用の関数とBinary比較用の関数をモジュールを分けて宣言する必要があるのでしょうか?
そういう場合に、StrComp関数が使用できます。
ただし、StrComp関数は文字列が一致するときに0を返却することに注意してください。

下の例はStrComp関数の使い方の一例です。
Option Compare Textが宣言されたモジュール内でBinary比較するケースです。
1つ目のIf文では文字列は一致とみなされますが、2つ目のIf分では不一致とみなされます。

Option Explicit
Option Compare Text

Public a As Long
Private b As Long
Dim c As Long

Public Sub Sub1()

    Dim a As String
    Dim b As String
    
    a = "a"
    b = "A"

    If (a = b) Then
        MsgBox ("aとbは同じ値です")
    Else
        MsgBox ("aとbは違う値です")
    End If

    If StrComp(a, b, vbBinaryCompare) = 0 Then
        MsgBox ("aとbは同じ値です")
    Else
        MsgBox ("aとbは違う値です")
    End If

End Sub

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です