VBAで文字列に全角文字が含まれているか判断するにはLen関数
とLenB関数
を使用します。
Len 関数 (Visual Basic for Applications) | Microsoft Learn
全角文字が含まれているか判断するコードは以下になります。
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</pre>
Len
で文字列の文字数をカウントし、LenB
で文字列のバイト数をカウントします。
LenB
で半角文字を1バイトとして計算したいときは、StrConv関数
の引数にvbFromUnicode
を指定します。
Len
とLenB
の値に差があるとき、全角文字が含まれています。
hazZenkaku
をテストしてみます。
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には全角文字は含まれていません。
