文字の種類(数字/アルファベット/カナ)を判別する方法を解説します。
主にLike演算子を利用します。
Like演算子の使い方についてはこちらの記事を参照ください。
文字が数値か判定する
文字が数値か判定するには、以下のいずれかのコードを実行します。
' サンプルとしてあるセル値の1文字目を判定する Dim 判定文字 As String 判定文字 = Left(Range("A1"), 1) ' 文字通り数値か判定 If IsNumeric(判定文字) Then ' Like演算子で「数字1文字であるか」判定 If 判定文字 Like "#" Then ' Like演算子で「数字の0~9までの文字か」判定 If 判定文字 Like "[0-9]" Then
ある1文字が数字であるかをストレートに判定する場合は、
IsNumeric関数で判定するのが分かりやすくて簡単です。
対してLike演算子は複雑な判定をすることができますので、
- 数字2文字であるかを判定する"##"
- 0~5の数字だけを判定する"[0-5]"
など、より高度な処理を行う場合はこちらを利用して下さい。
文字がアルファベットか判定する
文字がアルファベットか判定するには、以下のコードを実行します。
' Like演算子で「英字のA~Zまたはa~zであるか」判定 If 判定文字 Like "[A-Z]" Or 判定文字 Like "[a-z]" Then
Like演算子の"[○-△]"という記法を利用すると、
文字○から文字△までの間の文字か判定できます。
より正確には、文字○の文字コード番号と、文字△の文字コード番号の、
間の文字コード番号を持つ文字かを判定することができます。

文字コード上でアルファベットの大文字と小文字はそれぞれで連続していますので、
[A-Z]と[a-z]をそれぞれ判定することで文字がアルファベットか判定できます。
大文字、小文字を分けて判定したい場合はいずれか一方を判定してください。
' Like演算子で「アルファベット大文字であるか」判定 If 判定文字 Like "[A-Z]" Then
なお、この判定に"[A-z]"という記述を用いているコードを見かけますが、
大文字Zから小文字aの間には、6つの記号「[\]^_`」が存在します。
この書き方では、これらの記号もアルファベット判定をされてしまいますので、
[A-Z]と[a-z]はしっかりと分けて判定を行ってください。
文字がひらがな/半角カナ/全角カナか判定する
文字がひらがな/半角カナ/全角カナか判定するには、以下のコードを実行します。
' ひらがなか判定 If 判定文字 Like "[ぁ-ん]" Then ' 全角カタカナか判定 If 判定文字 Like "[ァ-ヶ]" Then ' 半角カタカナか判定 If 判定文字 Like "[ヲ-ン]" Then ' 半角カタカナ用の記号(濁点・半濁点・半角の句読点など)を含めて判定 If 判定文字 Like "[。-゚]" Then
まず注意しなければいけないのが、
小さいア(ァ)のような捨て文字がメインの文字より上にあることです。

カナ判定に"[ア-ン]"と記述すると小さいアが抜けてしまうことにご注意ください。
また、アイウエオか判定する際"[ア-オ]"は使えません。
"[アイウエオ]"と書く必要があることにもご注意ください。
他に注意すべき点として、最後の文字が「ん」でない場合もあります。
小さいケやカはまだしも、ヴが抜けることは実務上問題になりますので、
最終文字についても注意してください。
最後に、半角カナは濁点と半濁点も1文字として扱い、
さらに句読点も半角になっている可能性があります。
これらの文字も半角カナと判定した方がいい場面は多いと思いますので、
後者の判定を使用することをおすすめします。
なお、上記の判定では、環境依存文字「ヷヸヹヺ」などは判定していません。
これらもカタカナに含めたい場合は、ChrW関数などを利用して判定して下さい。