「フリガナ」の欄に入力 の続き2(失敗談)
先日は、様々な書式でよく見かける「フリガナ」欄の入力方法を考えてみた。
infoment.hatenablog.com
今日は、これの続きを少しだけご紹介。
VBAでフリガナを取得する場合、方法は次の二つ。
- WorkSheet関数を、VBAで使用。
- ApplicationオブジェクトのGetPhoneticメソッドを使用。
昔は、WorksheetFunction.Phoneticを使用することが出来なかったと思っていたが、我が家のExcel2016で試したところ使用できた。仕様が変わったのか、単なる覚え違いだったか。
ここで注意したいのが、上記の両者は返ってくる結果が違うということ。
Sub test() MsgBox WorksheetFunction.Phonetic(Selection) & vbNewLine & _ Application.GetPhonetic(Selection.Value) End Sub
↓ こちらで試してみる。
このように異なる結果が表示された。
前者は設定されたフリガナが、後者は一般的な読み仮名が返ってくるようだ。それに気付かず、今日は下記のようなマクロを作ってしまい、頭を悩ませていた。
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
何度設定しても、初期値として変更前のもの(と思える読み仮名)がセットされてしまう。
気付くまで、ちょっとした時間を使ってしまいました。
参考まで。