半角と全角を判定するには

Last-modified: 2021-12-17 (金) 01:06:58
Public Function IsNarrow(strText As String) As Boolean
    Dim intCode As Integer

    For i = 1 To Len(strText)
         intCode = Asc(Mid(strText, i, 1))

         If intCode < &H0 Or &HFF < intCode Then
            IsNarrow = False

            Exit Function

         End If

    Next

    IsNarrow = True

End Function
Public Function IsWide(strText As String) As Boolean
    Dim intCode As Integer

    For i = 1 To Len(strText)
         intCode = Asc(Mid(strText, i, 1))

         If &H0 <= intCode And intCode <= &HFF Then
            IsWide = False

            Exit Function

         End If

    Next

    IsWide = True

End Function
Private Sub Test()
    Debug.Assert IsNarrow(" ")
    Debug.Assert IsNarrow("0")
    Debug.Assert IsNarrow("A")
    Debug.Assert IsNarrow("a")
    Debug.Assert IsNarrow("~")
    Debug.Assert IsNarrow("。")
    Debug.Assert IsNarrow("ヲ")
    Debug.Assert IsNarrow("ン")
    Debug.Assert IsNarrow("゚")
    Debug.Assert IsNarrow(" 0Aa~。ヲン゚")

    Debug.Assert IsNarrow(" ") = False
    Debug.Assert IsNarrow("0") = False
    Debug.Assert IsNarrow("A") = False
    Debug.Assert IsNarrow("a") = False
    Debug.Assert IsNarrow("あ") = False
    Debug.Assert IsNarrow("ア") = False
    Debug.Assert IsNarrow("亜") = False
    Debug.Assert IsNarrow(" 0Aaあア亜") = False

    Debug.Assert IsWide(" ")
    Debug.Assert IsWide("0")
    Debug.Assert IsWide("A")
    Debug.Assert IsWide("a")
    Debug.Assert IsWide("あ")
    Debug.Assert IsWide("ア")
    Debug.Assert IsWide("亜")
    Debug.Assert IsWide(" 0Aaあア亜")

    Debug.Assert IsWide(" ") = False
    Debug.Assert IsWide("0") = False
    Debug.Assert IsWide("A") = False
    Debug.Assert IsWide("a") = False
    Debug.Assert IsWide("~") = False
    Debug.Assert IsWide("。") = False
    Debug.Assert IsWide("ヲ") = False
    Debug.Assert IsWide("ン") = False
    Debug.Assert IsWide("゚") = False
    Debug.Assert IsWide(" 0Aa~。ヲン゚") = False

End Sub