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 FunctionSub 文字列の全角半角判定()
‘実行結果 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
コメント