指定された1文字がカタカナ(全角または半角)かどうかを判定する関数
タイトルのマクロは、以下です。
'********************************************************
'* 関数名: IsKatakana
'* 概要 : 指定された1文字がカタカナ(全角または半角)かどうかを判定する関数
'*
'* 引数:
'* ch [String] - 判定対象の文字列(1文字)
'*
'* 戻り値:
'* [Boolean] -
'* True : 引数がカタカナ(全角または半角)の場合
'* False : カタカナ以外(ひらがな、漢字、英字、記号、空文字など)の場合
'*
'* 注意点:
'* - 引数に複数文字を与えた場合は、先頭1文字のみが評価されます(VBAの仕様)。
'* - 空文字列が入力された場合は False を返します。
'********************************************************
Function IsKatakana(ch As String) As Boolean
' 空文字が指定された場合は False を返す
If ch = "" Then
IsKatakana = False
Exit Function
End If
Dim code As Long
' 文字コード(Unicode)を取得
code = AscW(ch)
' 全角カタカナの判定: U+30A0~U+30FF(Unicode: 12448~12543)
If code >= &H30A0 And code <= &H30FF Then
IsKatakana = True
' 半角カタカナの判定: U+FF66~U+FF9F(Unicode: 65382~65439)
ElseIf code >= &HFF66 And code <= &HFF9F Then
IsKatakana = True
' 上記以外はカタカナではない
Else
IsKatakana = False
End If
End Function
判定対象のUnicode範囲について
種類 | Unicode範囲 | 文字例 |
---|---|---|
全角カタカナ | U+30A0~U+30FF | ア, イ, ウ… |
半角カタカナ | U+FF66~U+FF9F | ア, イ, ウ… |
使用例
Debug.Print IsKatakana("ア") ' True(全角カタカナ)
Debug.Print IsKatakana("ア") ' True(半角カタカナ)
Debug.Print IsKatakana("あ") ' False(ひらがな)
Debug.Print IsKatakana("A") ' False(英字)
Debug.Print IsKatakana("") ' False(空文字)
このように、全角・半角のどちらのカタカナも正しく判定できるように設計されています。