メインコンテンツへスキップ
VBAで文字列に全角が含まれているか判断する

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

·2 分
Programming VBA
かずさプログラマー
著者
かずさプログラマー
業務の作業自動化を行っています。Go、VBA、Pythonを主に使用しています。過去にはC#、VB.Net、JavaScriptも使用していました。

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

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

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

関連記事

【VBA】データを並び替える
·2 分
Programming VBA
【VBA】Shell関数を使用してフォルダを開く
·2 分
Programming VBA
【VBA】フォルダを操作する
·3 分
Programming VBA