Digital_Neko

フリーランスプログラマー

Excel VBA 文字列が全てカナであるか判定する ユニコード カナ判定

こんにちはOnoです。今回はExcel VBAを用いて文字列が全てカナであるかを判定するプログラム
です。早速ですが、サンプルプログラムは図1になります。今回はカナのユニコード範囲を指定して
文字列のそれぞれの文字がカナであるか判定します。

図1 カナ文字判定

まず検証する文字列を「アい!ウェお1」とします。ここでカナを判定する際にユニコード
の16進数の範囲で指定できると楽(ユニコードの表をそのまま利用できます)です。
そこで、カタカナのユニコードの範囲(30A1〜30FF)をVBAで16進数表記のまま使いたいので、
頭に&Hをつけます。こうすることで内部的には10進数の値を返してくれます。

プログラムでは確認のため、Debug.Printでカナのユニコードの範囲を10進数で表示しています。

そして文字列を先頭から末尾までカナであるか調べる必要があります。
そこで、For i = 1 To Len(str) とMid(str,i,1)を利用して一文字ずつ取り出しています。さらに
その文字をAscW関数を利用してユニコード文字に対応した10進数の値を返すようにしています。

この文字に対応したユニコードの値が、カナのユニコードの範囲に入っていれば良いことになります。
したがって、&H30A1と&H30FFの範囲に入っているか判定しています。

プログラム中に出てくる、ChrW関数はユニコードに対応した文字を返してくれます。念のため
逆変換して元の文字に戻る事を確認しています。

実行結果は図2になります。

図2 カナ判定 実行結果

カナのユニコードの範囲は、12449〜12543であることが表示されています。またそれぞれの
文字がカナである場合はOK、カナでない場合はNGが表示されています。さらにユニコードの
10進数での値と、ユニコードからカナに戻した値も表示しています。

今回は、ユニコードの範囲を指定してカナ判定をする方法を紹介しました。これができるように
なると、セルの入力チェックなどが楽にできるようになると思います。

今回の記事が皆様のお役に立てれば幸いです。