指定した文字列の中から、半角カタカナが最初に出現する位置を返す関数
タイトルのマクロは、以下です。
'********************************************************
'* 関数名: 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)とは別物なので、区別して処理が必要です。