VB6 - 文字列を大文字小文字を区別しないで比較する

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

スポンサーリンク

VB6 では、Option Compare ステートメントを Text に指定すれば、小文字または大文字を区別しないようになるようですが、国別情報によって決定されるものですので、頼らない方が無難と言えます。LCase$ 関数、または UCase$ 関数などで統一した後、比較する方が確実でしょう。

あまり利用価値はないと思いますが、以下のような関数を自作します。

サンプルコード

以下にサンプルコードを示します。

VB6.0 以前
' -------------------------------------------------------------------------------
'       文字列を比較します。
'
' @Param    st1         第 1 の文字列。
' @Param    st2         第 2 の文字列。
' @Param    [bIgnore]   小文字または大文字の区別をしないかどうか。
' @Return               文字列が等しい場合は 0。第 1 の文字列が大きい場合は 1。
'                       それ以外の場合は -1。
' -------------------------------------------------------------------------------
Public Function CompareString(ByVal st1 As String, ByVal st2 As String, Optional ByVal bIgnore As Boolean = False) As Integer
    If bIgnore Then
        st1 = LCase$(st1)
        st2 = LCase$(st2)
    End If

    If st1 = st2 Then
        CompareString = 0
    ElseIf st1 > st2 Then
        CompareString = 1
    Else
        CompareString = -1
    End If
End Function

使用例は以下のようになります。

VB6.0 以前
    ' 必要な変数を宣言する
    Dim stTarget1 As String
    stTarget1 = "ABCDEF"

    Dim stTarget2 As String
    stTarget2 = "abcdef"

    Dim iCompare As Integer

    ' stTarget1 の文字列と stTarget2 の文字列を小文字または大文字を区別しないで比較する
    iCompare = CompareString(stTarget1, stTarget2)

    ' 比較した結果を表示する
    If iCompare = 0 Then
        Call MsgBox(stTarget1 & " と " & stTarget2 & " は等しい")
    ElseIf iCompare > 0 Then
        Call MsgBox(stTarget1 & " の方が大きい")
    Else
        Call MsgBox(stTarget2 & " の方が大きい")
    End If

関連するリファレンス

準備中です。

スポンサーリンク