VBA:文字列に半角カタカナが含まれていないかチェックするユーザー定義関数


入力データに半角カタカナが含まれていないかチェックするユーザー定義関数をVBAで作成したので覚書しておく。

どういうチェック方法が一番いいか色々考えたあげく、一番シンプルでわかりやすいと思った方法は以下の通り。

作成したユーザー定義関数の処理概要

処理ロジックは、以下の通り。

  1. チェック対象の文字列を引数として受け取る。
  2. ユーザー定義関数内に用意した文字列変数に半角カタカナに該当する文字列を列挙した文字列を代入しておく。
    半角カタカナ文字列 → “アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ゙゚ー”
  3. チェック対象の文字列から1文字ずつ文字を取り出す。
  4. Instr関数を使用して、取り出した文字が半角カタカナを列挙した文字列内の何れかの文字に該当しないかチェック。
  5. 「Instr関数の戻り値が0以外 = 半角カタカナに該当」となるので、ユーザー定義関数の戻り値としてFalseをセットして処理を終了。
  6. 最後までInstr関数の戻り値が0だったら半角カタカナは含まれていないことになるのでユーザー定義関数の戻り値としてTrueをセットする。
    入力データに半角カタカナが含まれていないかチェックするユーザー定義関数のサンプルプログラムを以下に記述。

ユーザー定義関数のサンプルプログラム

以下に文字列に半角カタカナが含まれていないかチェックするユーザー定義関数のサンプルプログラムを記載する。

引数として受け取った文字列に半角カタカナが含まれていないかチェックし、含まれていない場合は、True、含まれている場合は、Falseを返す。

チェックするだけでなく、半角カタカナや記号を全角に変換する方法については以下の記事を参照。

以前にも似たようなサンプルコードを作成して記事にしたけれど、今回は、半角のカタカナを全角に、全角の英字、数字、記号を半角に変換するユ...