令和の世の中になっても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とする使用は要検討。
コメント