文字列がすべて半角(半角カナ含む)かどうか判定する関数

タイトルの関数は、以下です。

Function IsAllHankaku_IncludeKana_Space(ByVal txt As String) As Boolean
    Dim i As Long, code As Long
    
    ' 入力文字列の各文字をチェックするループ
    For i = 1 To Len(txt)
        ' 文字コードを取得(Unicodeのコードポイント)
        code = AscW(Mid(txt, i, 1))
        
        ' 半角スペース(0x20)を許可
        If code = &H20 Then
            ' OK

        ' 半角英数字・記号(0x21 ~ 0x7E)
        ElseIf code >= &H21 And code <= &H7E Then
            ' OK

        ' 半角カナ(0xFF61 ~ 0xFF9F)
        ElseIf code >= &HFF61 And code <= &HFF9F Then
            ' OK

        Else
            IsAllHankaku_IncludeKana_Space = False
            Exit Function
        End If
    Next i
    
    ' すべての文字が半角英数字・記号・半角カナのいずれかに該当した場合、Trueを返す
    IsAllHankaku_IncludeKana_Space = True
End Function

この関数の目的

文字列が “半角スペース/半角英数字/半角記号/半角カナ” のみで構成されているかどうかを判定する関数 です。

  • 条件をすべて満たせば True
  • 1つでも範囲外の文字(全角文字・漢字・ひらがな・絵文字など)があれば False

🧩 処理の流れ

① 文字列を1文字ずつ取り出す

For i = 1 To Len(txt)
    code = AscW(Mid(txt, i, 1))
  • Mid(txt, i, 1) : i 番目の 1 文字を取り出す
  • AscW(...) : その文字の Unicode コードポイント(整数値)を取得

② その文字が許可される種類か判定する

判定順は以下のとおりです。


✔ 1. 半角スペース(許可)

If code = &H20 Then
  • 半角スペース(” “)は Unicode 0x20 → 許可。

✔ 2. 半角英数字・半角記号(ASCII)

ElseIf code >= &H21 And code <= &H7E Then

ASCIIの範囲:

  • 半角数字:0〜9
  • 半角英字:A〜Z / a〜z
  • 半角記号:! ” # $ % & ‘ ( ) * + , – . / : ; < = > ? など

✔ 3. 半角カナ

ElseIf code >= &HFF61 And code <= &HFF9F ThenElseIf code >= &HFF61 And code <= &HFF9F Then

例:
ァ ィ ゥ ェ ォ
カ キ ク ケ コ
サ タ ナ ハ マ ヤ ラ ワ
゙ ゚ ー ・ 。 など


❌ 4. どれにも当てはまらない場合 → False

Else
    IsAllHankaku_IncludeKana_Space = False
    Exit Function
End If

NG になるもの(例)

  • 全角スペース( )
  • 全角文字(A、あ、ア、漢字など)
  • ひらがな
  • 全角カタカナ
  • 絵文字
  • 記号(スマホ絵文字など)
  • サロゲート文字
    など

③ 全文字チェックして問題なければ True

IsAllHankaku_IncludeKana_Space = True

🔍 この関数で「OK」になる文字まとめ

種類
半角スペース" "
半角英字A〜Z, a〜z
半角数字0〜9
半角記号! ” # $ % & ‘ ( ) * + , – . / : ; …
半角カナア イ ウ エ オ カ キ … 。 、 ー ゙ ゚

✨ 要点まとめ

  • 半角スペースを含めた半角文字だけを許可
  • ASCII文字、記号、半角カナだけOK
  • 一文字でも全角やその他が混じれば False
  • バリデーション用途に最適

以下、使用例です。

Sub TestKana()
    Debug.Print IsAllHankaku_IncludeKana_Space("ABC 123")      ' True(半角スペースOK)
    Debug.Print IsAllHankaku_IncludeKana_Space("アイウカキク")     ' True(半角カナOK)
    Debug.Print IsAllHankaku_IncludeKana_Space("カタカナABC!")    ' True
    
    Debug.Print IsAllHankaku_IncludeKana_Space("テスト")      ' False(全角ひらがな・カタカナNG)
    Debug.Print IsAllHankaku_IncludeKana_Space("ABC")      ' False(全角英字NG)
End Sub

Follow me!