カタカナの「ケ」(全角)または「ケ」(半角)が漢字に挟まれている場合、それを漢字の「ヶ」に変換する関数
タイトルのマクロは、以下です。
'********************************************************
'* 関数名: 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("イケメン") ' → "イケメン"(変換されない)