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