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

次の文字列ABCDEには全角文字は含まれていません。
