VBAで文字列に全角が含まれているか判断する

VBAで文字列に全角文字が含まれているか判断するにはLen関数LenB関数を使用します。

https://msdn.microsoft.com/ja-jp/vba/language-reference-vba/articles/len-function

全角文字が含まれているか判断するコードは以下になります。

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を指定します。
LenLenBの値に差があるとき、全角文字が含まれています。

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

Licensed under CC BY-NC-SA 4.0
最終更新 2018年7月8日 00:49
Hugo で構築されています。
テーマ StackJimmy によって設計されています。