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には全角文字は含まれていません。

関連ページ