指定された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(空文字)

このように、全角・半角のどちらのカタカナも正しく判定できるように設計されています。

Follow me!