文字種チェック
業務でよくある「入力チェック」の中でも、文字種チェックは重要です。
例えば「半角数字だけ」「英字だけ」「カタカナだけ」といった制約を満たしているかを確認する処理です。
初心者向けに、よく使うパターンをテンプレート化して説明します。
基本の考え方
- 目的:
- 入力値が「数字だけ」「英字だけ」「特定文字種だけ」かを判定する
- 不正な文字が混じっていないかを確認する
- よく使う方法:
Like演算子でパターン判定Asc/Mid関数で文字コードを判定- 正規表現(VBScript.RegExp)を使う
テンプレ1:半角数字チェック
Sub CheckDigits()
Dim val As String
val = Worksheets("Input").Range("A1").Value
If val Like "*[!0-9]*" Then
MsgBox "半角数字以外の文字が含まれています。"
Else
MsgBox "半角数字のみです。"
End If
End Sub
VB- ポイント:
Like "*[!0-9]*"→ 「0~9以外の文字が含まれている」判定。- 否定パターン
[!0-9]を使う。
テンプレ2:英字チェック(A~Z, a~z)
Sub CheckAlphabet()
Dim val As String
val = Worksheets("Input").Range("A2").Value
If val Like "*[!A-Za-z]*" Then
MsgBox "英字以外の文字が含まれています。"
Else
MsgBox "英字のみです。"
End If
End Sub
VB- ポイント:
[A-Za-z]→ 英字判定。- 否定
[!A-Za-z]で「英字以外」を検出。
テンプレ3:カタカナチェック(全角カタカナ)
Sub CheckKatakana()
Dim val As String
val = Worksheets("Input").Range("A3").Value
Dim i As Long, ch As String, code As Long, isValid As Boolean
isValid = True
For i = 1 To Len(val)
ch = Mid(val, i, 1)
code = AscW(ch)
' 全角カタカナのUnicode範囲: 12449~12538
If code < 12449 Or code > 12538 Then
isValid = False
Exit For
End If
Next i
If isValid Then
MsgBox "全角カタカナのみです。"
Else
MsgBox "カタカナ以外の文字が含まれています。"
End If
End Sub
VB- ポイント:
AscWでUnicodeコードを取得。- 全角カタカナの範囲で判定。
テンプレ4:正規表現で柔軟に文字種チェック
Sub CheckRegex()
Dim val As String
val = Worksheets("Input").Range("A4").Value
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = "^[0-9]+$" ' 半角数字のみ
regex.IgnoreCase = True
If regex.Test(val) Then
MsgBox "半角数字のみです。"
Else
MsgBox "半角数字以外が含まれています。"
End If
End Sub
VB- ポイント:
^[0-9]+$→ 「先頭から末尾まで数字のみ」。- 正規表現を使うと複雑なパターンも簡単。
例題で練習
'例1:社員番号が半角数字だけかチェック
'例2:ユーザーIDが英字だけかチェック
'例3:氏名カナが全角カタカナだけかチェック
'例4:郵便番号が半角数字7桁か正規表現でチェック
VB初心者向けポイント
- Like演算子は簡単で便利 → 半角数字や英字チェックに最適
- AscWで文字コード判定 → 全角文字種のチェックに使える
- 正規表現は柔軟 → 複雑なパターンや桁数指定に便利
- 必ず「エラー時のメッセージ」を分かりやすくする → ユーザーが修正しやすい
👉 この「文字種チェックテンプレ」を覚えておけば、Excel VBAで 入力値が正しい文字種かどうかを判定し、業務エラーを防ぐ仕組み を簡単に作成できます。
