カタカナの「ケ」(全角)または「ケ」(半角)が漢字に挟まれている場合、それを漢字の「ヶ」に変換する関数

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

'********************************************************
'* 関数名: ConvertKeBetweenKanji
'* 概要  : カタカナの「ケ」(全角)または「ケ」(半角)が漢字に挟まれている場合、
'*         それを漢字の「ヶ」に変換する。
'*
'* 引数:
'*   text [String] - 対象の文字列
'*
'* 処理内容:
'*   - 「ケ」または「ケ」が、前後ともに漢字である場合に限り、
'*     それを「ヶ」(漢字としての小文字)に置き換える。
'*   - 上記以外の場合は変換せず、そのまま保持する。
'*
'* 注意:
'*   - この処理は「isKanji」関数の利用を前提とする。
'*     (指定した1文字が漢字であるかを判定する関数。別途実装が必要)
'********************************************************
Function ConvertKeBetweenKanji(text As String) As String
    Dim i As Long
    Dim result As String
    Dim currentChar As String
    Dim prevChar As String
    Dim nextChar As String

    result = ""

    For i = 1 To Len(text)
        currentChar = Mid(text, i, 1)

        If i > 1 Then
            prevChar = Mid(text, i - 1, 1)
        Else
            prevChar = ""
        End If

        If i < Len(text) Then
            nextChar = Mid(text, i + 1, 1)
        Else
            nextChar = ""
        End If

        ' 「ケ」または「ケ」が漢字に挟まれている場合、「ヶ」に変換
        If (currentChar = "ケ" Or currentChar = "ケ") Then
            If isKanji(prevChar) And isKanji(nextChar) Then
                currentChar = "ヶ"
            End If
        End If

        result = result & currentChar
    Next i

    ConvertKeBetweenKanji = result
End Function

実行例

Debug.Print ConvertKeBetweenKanji("大ケ谷")   ' → "大ヶ谷"
Debug.Print ConvertKeBetweenKanji("山ケ島")   ' → "山ヶ島"
Debug.Print ConvertKeBetweenKanji("イケメン") ' → "イケメン"(変換されない)

Follow me!