入力データに半角カタカナが含まれていないかチェックするユーザー定義関数をVBAで作成したので覚書しておく。
どういうチェック方法が一番いいか色々考えたあげく、一番シンプルでわかりやすいと思った方法は以下の通り。
作成したユーザー定義関数の処理概要
処理ロジックは、以下の通り。
- チェック対象の文字列を引数として受け取る。
- ユーザー定義関数内に用意した文字列変数に半角カタカナに該当する文字列を列挙した文字列を代入しておく。(※1)
- チェック対象の文字列から1文字ずつ文字を取り出す。
- Instr関数を使用して、取り出した文字が半角カタカナを列挙した文字列内の何れかの文字に該当しないかチェック。
- 「Instr関数の戻り値が0以外 = 半角カタカナに該当」となるので、ユーザー定義関数の戻り値としてFalseをセットして処理を終了。
- 最後までInstr関数の戻り値が0だったら半角カタカナは含まれていないことになるのでユーザー定義関数の戻り値としてTrueをセットする。
※1:半角カタカナ文字列 → "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ゙゚ー"
入力データに半角カタカナが含まれていないかチェックするユーザー定義関数のサンプルプログラムを以下に記述。
ユーザー定義関数のサンプルプログラム
以下に文字列に半角カタカナが含まれていないかチェックするユーザー定義関数のサンプルプログラムを記載する。
引数として受け取った文字列に半角カタカナが含まれていないかチェックし、含まれていない場合は、True、含まれている場合は、Falseを返す。
Function CheckHankaku(strChkData As String) As Boolean
Dim strHan As String, i As Integer
‘変数に半角カタカナを列挙した文字列をセットする
strHan = "アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンァィゥェォッャュョ゙゚ー"
‘引数として受け取った文字列を1文字ずつ取り出して変数strHanの文字列に
‘該当するかチェックする。
For i = 1 To Len(strChkData)
If InStr(strHan, Mid(strChkData, i, 1)) <> 0 Then
CheckHankaku = False
Exit Function
End If
Next i
CheckHankaku = True
End Function
チェックするだけでなく、半角カタカナや記号を全角に変換する方法については以下の記事を参照。
VBA共通:半角カタカナを全角、全角英数、記号を半角に変換するユーザー定義関数
以前にも似たようなサンプルコードを作成して記事にしたけれど、今回は、半角のカタカナを全角に、全角の英字、数字、記号を半角に変換するユーザー定義関数のサンプルプログラムを作ったので覚書。"半角のカタカナを全角に、全角の英字、数字、記号を半角に...
コメント