VBAで文字列に全角文字が含まれているか判断するにはLen関数とLenB関数を使用します。
Len関数
コードは以下になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Function hasZenkaku(s As String) As Boolean '################################################################################### '文字列が全角文字を含むかどうか判断する '----------------------------------------------------------------------------------- '引数 :s 全角文字が含まれるかどうか判断したい文字列 '戻り値:全角文字が含まれる場合True,含まれない場合False '################################################################################### If Len(s) <> LenB(StrConv(s, vbFromUnicode)) Then hasZenkaku = True Else hasZenkaku = False End If End Function |
Len関数で文字列の文字数をカウントします。
LenB関数で文字列のバイト数をカウントします。
LenB関数で半角文字を1バイトとして計算したいときは、StrConv関数の引数にvbFromUnicodeを指定します。
Len関数とLenB関数の値に差があるとき、全角文字が含まれています。
hazZenkaku Functionをテストしてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Sub test_hasZenkaku() Dim s As String s = "ABCDE" '先頭のAが全角 If hasZenkaku(s) Then MsgBox s & "は全角文字を含んでいます" Else MsgBox s & "は全角文字を含んでいません" End If s = "ABCDE" '全角文字なし If hasZenkaku(s) Then MsgBox s & "は全角文字を含んでいます" Else MsgBox s & "は全角文字を含んでいません" End If End Sub |
最初の文字列ABCDEには全角文字が含まれています。
次の文字列ABCDEには全角文字は含まれていません。
コメント