ExcelのVBAを使いShift-JISコードで半角文字を判定するユーザー関数「IsAllHankaku」

Excel コンピュータ
Microsoft Excel

令和の世の中になってもSift-JISの半角全角に悩むことになるとは思いもしませんでした。

準備

VBAが実行可能な状態

Excel⇒開発⇒VisualBasic⇒標準モジュールの追加⇒ソースコード貼り付け

ソースコード

Function IsAllHankaku(str As String) As Boolean

  ' 文字列が空の場合、Trueを返す(空文字列は半角とみなす)
  If str = "" Then
    IsAllHankaku = True
    Exit Function
  End If

  Dim i As Long
  Dim charCode As Integer

  ' 文字列のすべての文字をチェック
  For i = 1 To Len(str)
    charCode = Asc(Mid(str, i, 1))

    ' Shift-JISの半角文字の範囲
    ' 0x20~0x7E (ASCII文字)
    ' 0xA1~0xDF (半角カタカナ)
    If Not ((charCode >= &H20 And charCode <= &H7E) Or (charCode >= &HA1 And charCode <= &HDF)) Then
      IsAllHankaku = False ' 半角文字以外の文字が見つかった
      Exit Function
    End If
  Next i

  IsAllHankaku = True ' すべての文字が半角文字だった

End Function

使い方

エクセルのセルに=IsIsAllHankaku(“文字列”)でtrue又はfalseが返るようになります。

戻り値を反転させることで全角の判定にも使えるかもしれません。
半角文字の判定条件はソースコードにある通りですので、必要がある場合修正して使用のこと。
長さ0の文字列をtrueとする使用は要検討。

コメント