VBATips

文字列が「半角/全角」「大文字/小文字」を区別せず比較する【ExcelVBA】

文字列が「半角/全角」「大文字/小文字」を区別しない

文字列が半角なのか、全角なのか、半角全角混在なのか判別したいケースがあります。
関数によっては全角含まれていてもOKだったり、NGだったりする為、
自身で判断させた方がスムーズです。

文字列が「半角/全角」「大文字/小文字」を区別しないサンプル

Public Sub sample()
    Dim str As String: str = "Excel"
    Dim chk As String: chk = "EXCEL"

    '■通常通り比較すると大文字/小文字、全角/半角が区別されて一致しない
    If str = chk Then
        Debug.Print "一致します"
    Else
        Debug.Print "一致しません"
    End If
    
    '■完全一致でチェックしたい場合(大文字/小文字、全角/半角が区別しない)
    If StrConv(UCase(str), vbNarrow) = StrConv(UCase(chk), vbNarrow) Then
        Debug.Print "一致します"
    Else
        Debug.Print "一致しません"
    End If
    '■一部一致でチェックしたい場合(大文字/小文字、全角/半角が区別しない)
    If InStr(StrConv(UCase(str), vbNarrow), StrConv(UCase(chk), vbNarrow)) <> 0 Then
        Debug.Print "含まれます"
    Else
        Debug.Print "含まれません"
    End If

End Sub

注意点

  • これは区別しないではなく、特定条件に合わせる事で区別をしない計算をしています。
  • 具体的には全角文字→半角文字へ統一小文字→大文字へ統一して比較をする形です。

関連記事

コメント

タイトルとURLをコピーしました