「フリガナ」の欄に入力 の続き2(失敗談)

先日は、様々な書式でよく見かける「フリガナ」欄の入力方法を考えてみた。
infoment.hatenablog.com

今日は、これの続きを少しだけご紹介。
f:id:Infoment:20190710230052p:plain

VBAでフリガナを取得する場合、方法は次の二つ。

  1. WorkSheet関数を、VBAで使用。
  2. ApplicationオブジェクトのGetPhoneticメソッドを使用。

昔は、WorksheetFunction.Phoneticを使用することが出来なかったと思っていたが、我が家のExcel2016で試したところ使用できた。仕様が変わったのか、単なる覚え違いだったか。

ここで注意したいのが、上記の両者は返ってくる結果が違うということ。

Sub test()
    MsgBox WorksheetFunction.Phonetic(Selection) & vbNewLine & _
           Application.GetPhonetic(Selection.Value)
End Sub

↓ こちらで試してみる。
f:id:Infoment:20190710231212p:plain

このように異なる結果が表示された。
f:id:Infoment:20190710231336p:plain

前者は設定されたフリガナが、後者は一般的な読み仮名が返ってくるようだ。それに気付かず、今日は下記のようなマクロを作ってしまい、頭を悩ませていた。

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

Sub test()
    Dim TargetRange As Range
    Set TargetRange = Selection(1)
    Dim Kana As Variant
        Kana = InputBox("読み仮名を入力", _
                        "読み仮名変更", _
                        Application.GetPhonetic(TargetRange.Value))
        If Kana <> False And Kana <> vbNullString Then
            AddPhonetic TargetRange, CStr(Kana)
        End If
End Sub

何度設定しても、初期値として変更前のもの(と思える読み仮名)がセットされてしまう。
f:id:Infoment:20190710233310p:plain

気付くまで、ちょっとした時間を使ってしまいました。

参考まで。