文字列がすべて半角(半角カナ含む)かどうか判定する関数
タイトルの関数は、以下です。
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

