指定した文字列の中から、半角カタカナが最初に出現する位置を返す関数

タイトルのマクロは、以下です。

'********************************************************
'* 関数名: GetHalfWidthKatakanaPosition
'* 概要  : 指定した文字列の中から、半角カタカナが最初に出現する位置を返す関数
'*
'* 引数:
'*   inputString [String]      - チェック対象の文字列
'*   startPosition [Long]      - チェックを開始する文字位置(1から始まる)省略時:1
'*
'* 戻り値:
'*   [Long] - 最初に見つかった半角カタカナの位置(1始まり)。見つからない場合は 0 を返す。
'*
'* 補足:
'*   - VBAの文字コードは Unicode(UTF-16)を基に扱われる。
'*   - 半角カタカナのUnicode範囲は以下のとおり:
'*       U+FF61 ~ U+FF9F(例: ァ, ィ, ウ, ゙ など)
'*   - AscW 関数を使用して、各文字のUnicodeコードポイントを取得する。
'*
'********************************************************
Function GetHalfWidthKatakanaPosition(ByVal inputString As String, Optional ByVal startPosition As Long = 1) As Long
    Dim i As Long                  ' 文字列をループするカウンタ
    Dim charCode As Long          ' 現在の文字のUnicodeコードポイント
    
    ' 入力文字列の先頭から末尾までをループ(startPosition から開始)
    For i = startPosition To Len(inputString)
        ' i 文字目の文字コード(Unicode)を取得
        charCode = AscW(Mid(inputString, i, 1))
        
        ' 取得した文字コードが半角カタカナの範囲(U+FF61~U+FF9F)内かどうかを判定
        If charCode >= &HFF61 And charCode <= &HFF9F Then
            ' 半角カタカナを検出したら、その位置を返す
            GetHalfWidthKatakanaPosition = i
            Exit Function
        End If
    Next i
    
    ' 見つからなかった場合は 0 を返す(見つからなかったことを示す)
    GetHalfWidthKatakanaPosition = 0
End Function

✅ 使用例

🔍 補足情報

  • 半角カタカナは日本語環境でしか見かけない特殊な表現で、Shift_JIS や Unicode の U+FF61~U+FF9F の範囲に該当します。
  • 全角カタカナ(U+30A0〜U+30FF)とは別物なので、区別して処理が必要です。

Follow me!