Home > 即効テクニック > Excel VBA > ユーザーフォーム関連のテクニック > ユーザフォーム入門 - 住所入力フォームを作成する(5) 〜 ふりがなの取得

即効テクニック

ユーザーフォーム関連のテクニック

ユーザフォーム入門 - 住所入力フォームを作成する(5) 〜 ふりがなの取得

(Excel 2000)
テクニック集”ユーザーフォーム入門−住所入力フォームを作成する(4)”までの内容を前提とし、ここではテキストボックスに入力された値から振り仮名候補を取得する方法について考察します。
振り仮名の取得はGetPhoneticメソッドを、変換対象のテキストを引数として用います。

例 : GetPhonetic(対象テキスト)
    GetPhonetic(TextBox1.Value)

(注意点)引数を指定したときに得られる振り仮名は第一候補です。ふりがなが期待通りに
     取得できなかった場合には、引数を省略して再度GetPhoneticメソッドを呼び出す
     必要があります。

以下のサンプルでは、住所入力フォームの会社名テキストボックス(txtKaisha)を入力して次のコントロールに移動したときに第一候補を一度取得します。
フォームモジュールのオブジェクトボックスから"txtKaisha"を選択、プロシージャボックスから"Exit"を選択すると、イベントプロシージャの雛型が挿入されます。
'===========================================================
Private Sub txtKaisha_Exit(ByVal Cancel As MSForms.ReturnBoolean)

Dim strTemp As String
If txtKaisha.Value <> "" Then
    '振り仮名の第一候補を取得
    strTemp = Application.GetPhonetic(txtKaisha.Value)
    '取得した振り仮名を半角文字に変換して”読み”テキストボックスへ格納
    txtYomi.Value = StrConv(strTemp, vbNarrow)
End If

End Sub
'===========================================================
さらに、振り仮名変換が期待通りでなかった場合にコマンドボタン(cmdYomi)のクリックイベントで振り仮名の候補をメッセージボックスに表示し、”はい”を選択した時に振り仮名候補を確定し、”いいえ”の場合には続けて候補を表示します。
'===========================================================
Private Sub cmdYomi_Click()

Dim intRet As Integer
Dim strPhonetic As String
'会社名が入力されていない場合にはプロシージャを抜ける
If txtKaisha.Value = "" Then Exit Sub

'一回目の振り仮名取得
strPhonetic = Application.GetPhonetic(txtKaisha.Value)
Do
'取得した振り仮名候補で確定するかどうかをメッセージボックスで確認
intRet = MsgBox(strPhonetic & vbCrLf & "確定しますか?", vbYesNoCancel)

If intRet = vbYes Then
    '確定の場合には半角文字に変換してテキストボックスに格納
    txtYomi.Value = StrConv(strPhonetic, vbNarrow)
ElseIf intRet = vbNo Then
    '”いいえ”を選択した場合には次の振り仮名候補を取得
    strPhonetic = Application.GetPhonetic()
End If
'振り仮名候補確定 OR キャンセルの場合にはループを抜ける
Loop While intRet = vbNo

End Sub
'===========================================================