Not (Mid(strInput, i, 1) Like "[ヲ-゚]" Or strInput = "-")
で不要な文字種を除外。
※"[ヲ-゚]“と”-“を指定するとカタカナひらがなの必要そうな文字列を抽出できる。
”-“を半角カナに含みたくない場合はstrInput = "-"
を外す。
その後StrConvで一度文字列を半角カナに変換してからStrCompのバイナリモードで比較することで、
半角カナの判定ができる。
'/** ' * isHankakuKana ' * 入力文字列が半角カナかを調べる ' * @param strInput 調べる文字列 ' * @return True:半角カナ False:半角カナではない ' */ Public Function isHankakuKana(ByVal strInput As String) As Boolean Dim i As Long '空文字の場合は判定前にFalse If strInput = "" Then isHankakuKana = False Exit Function End If '記号や数字、アルファベット等の場合はFalse For i = 1 To Len(strInput) If Not (Mid(strInput, i, 1) Like "[ヲ-゚]" Or strInput = "-") Then isHankakuKana = False Exit Function End If Next i '文字を半角カナに変換し、不整合ならFalse Dim hankakuKana As String hankakuKana = StrConv(strInput, vbKatakana + vbNarrow) isHankakuKana = StrComp(hankakuKana, strInput, vbBinaryCompare) = 0 End Function Sub test() Debug.Print isHankakuKana("アイウエオ") Debug.Print isHankakuKana("バビブベボ") Debug.Print isHankakuKana("パピプペポ") Debug.Print isHankakuKana("゙") Debug.Print isHankakuKana("゚") Debug.Print isHankakuKana("-") Debug.Print isHankakuKana("アイウエオ") Debug.Print isHankakuKana("あいうえお") Debug.Print isHankakuKana("abcdefg") Debug.Print isHankakuKana("ABCD") Debug.Print isHankakuKana("123456") Debug.Print isHankakuKana("。゙") Debug.Print isHankakuKana("") End Sub