【Excel Acsess Word VBA】文字列の半角判定、全角判定、全角半角混在判定関数(Is関数イメージ)

VBAで使える文字列の全角判定、半角判定、全角半角混在判定関数(Is関数イメージ)

ロジックは こちら  APIのインターフェースは C#の こちら を参考にさせてもらっている。

‘http://www.moug.net/tech/acvba/0120010.html 参考
‘半角文字がすべて半角の場合 Trueとなる。
Public Function IsHankaku(ByVal str As String) As Boolean
    IsHankaku = False
    Dim ANSIstr As String
    ANSIstr = StrConv(str, vbFromUnicode)
    Dim H As Long: H = Len(str)
    Dim Z As Long: Z = LenB(ANSIstr)
    If H = Z Then IsHankaku = True
End Function

‘半角文字がすべて全角の場合 Trueとなる。
Public Function IsZenKaku(ByVal str As String) As Boolean
    IsZenKaku = False
    Dim ANSIstr As String
    ANSIstr = StrConv(str, vbFromUnicode)
    Dim H As Long: H = Len(str)
    Dim Z As Long: Z = LenB(ANSIstr)
    If (H * 2) = Z Then IsZenKazu = True
End Function

‘半角全角文字混ざっている場合 Trueとなる。
Public Function IsZenHankaku(ByVal str As String) As Boolean
    IsZenHankaku = False
    Dim ANSIstr As String
    ANSIstr = StrConv(str, vbFromUnicode)
    Dim H As Long: H = Len(str)
    Dim Z As Long: Z = LenB(ANSIstr)
    If Not ((H = Z) Or ((H * 2) = Z)) Then IsZenHankaku = True
End Function

Sub 文字列の全角半角判定()

    ‘実行結果 False
    Debug.Print IsZenKaku("aaaa")
    ‘実行結果 True
    Debug.Print IsZenKaku("あああ")
    ‘実行結果 False
    Debug.Print IsZenKaku("あああa")
    ‘実行結果 False
    Debug.Print IsZenKaku("11")
    ‘実行結果 True
    Debug.Print IsZenKaku("11")
    ‘実行結果 True
    Debug.Print IsHankaku("aaaa")
    ‘実行結果 False
    Debug.Print IsHankaku("あああ")
    ‘実行結果 False
    Debug.Print IsHankaku("あああa")
    ‘実行結果 True
    Debug.Print IsHankaku("11")
    ‘実行結果 False
    Debug.Print IsHankaku("11")
    ‘実行結果 False
    Debug.Print IsZenHankaku("aaa")
    ‘実行結果 False
    Debug.Print IsZenHankaku("あああ")
    ‘実行結果 True
    Debug.Print IsZenHankaku("あああa")
    ‘実行結果 False
    Debug.Print IsZenHankaku("11")
    ‘実行結果 False
    Debug.Print IsZenHankaku("11")
    ‘実行結果 True
    Debug.Print IsZenHankaku("111")

End Sub

コメント

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