文字列が「半角/全角」「大文字/小文字」を区別しない
文字列が半角なのか、全角なのか、半角全角混在なのか判別したいケースがあります。
関数によっては全角含まれていても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
注意点
- これは区別しないではなく、特定条件に合わせる事で区別をしない計算をしています。
- 具体的には全角文字→半角文字へ統一、小文字→大文字へ統一して比較をする形です。



コメント