「強敵」と書いて「とも」と読む

先日職場での雑談から、こんな話題が登場した。
「検索って、平仮名でもできますよね」

ナンデスカ、ソレハ?初耳だった。
f:id:Infoment:20190705180351p:plain

果たして試してみると、確かにそのとおりだった。
例えば、「後日談」と入力して、「じつだん」で検索するとヒットする。
f:id:Infoment:20190705180606g:plain

不思議だなと思いつつも、何となく理由に心当たりがあった。マクロの記録で文字を入力するとき、それらしきものがいつも出ていたからだ。
f:id:Infoment:20190705181018p:plain

そこで、こんな実験をしてみた。

テスト1
⇒ 「後日談」と入力して、「じつだん」で検索。

Sub Test1()
    Dim FindResult As Range
        Range("A1") = "後日談"
    Set FindResult = Cells.Find("じつだん")
        If FindResult Is Nothing Then
            MsgBox "お探しの文字はありません。"
        Else
            MsgBox "お探しの文字は、" & FindResult.Address & "にあります。"
        End If
End Sub

結果、見つけることが出来なかった。
f:id:Infoment:20190705181718p:plain

スト2
⇒ 1に加え、「ゴジツダン」を読み仮名として入力したうえで検索。

Sub Test2()
    Dim FindResult As Range
        Range("A1") = "後日談"
        Range("A1").Characters(1, 3).PhoneticCharacters = "ゴジツダン"
    Set FindResult = Cells.Find("じつだん")
        If FindResult Is Nothing Then
            MsgBox "お探しの文字はありません。"
        Else
            MsgBox "お探しの文字は、" & FindResult.Address & "にあります。"
        End If
End Sub

結果、見つけることが出来た。
f:id:Infoment:20190705181939p:plain

ここまでは、半ば予想どおり。

テスト3
⇒ 2から、「後日談」の入力を省く。

Sub Test2()
    Dim FindResult As Range
        Range("A1").Characters.PhoneticCharacters = "ゴジツダン"
    Set FindResult = Cells.Find("じつだん")
        If FindResult Is Nothing Then
            MsgBox "お探しの文字はありません。"
        Else
            MsgBox "お探しの文字は、" & FindResult.Address & "にあります。"
        End If
End Sub

結果、見つけることが出来なかった。
f:id:Infoment:20190705182155p:plain

ふりがなを振るべき文字が無いのだから、当たり前と言えば、当たり前か。

ということで、以上を踏まえ、任意のセルに任意の読み仮名を振るマクロを作ってみた。

Sub AddPhonetic(target_range As Range, kana_to_add As String)
    target_range.Characters.PhoneticCharacters = kana_to_add 
End Sub

早速テストしてみよう。

Sub Test4()
    Range("A1") = "ラオウ"
    AddPhonetic Range("A1"), "とも"
End Sub

どうやら、上手くいったようだ。
f:id:Infoment:20190705182524p:plain

これでもう、キラキラネームの名簿だって怖くありません。

参考まで。