ユーザーフォーム入門 - 住所入力フォームを作成する(6) 〜 ふりがなの取得|Excel VBA |
「ユーザーフォーム入門 - 住所入力フォームを作成する(5) 〜 ワークシートへの転記」に続き、[会社名]テキストボックスに入力した値から、ふりがなの候補を取得する処理を作成していきます。
ふりがなの取得はApplicationオブジェクトのGetPhoneticメソッドを使用します。
GetPhoneticメソッドの引数に対象のテキストを指定すると、日本語のふりがなを返します。
Application.GetPhonetic(対象テキスト)
GetPhoneticメソッドの引数を指定したときに得られるのは、ふりがなの第一候補です。
ふりがなが期待通りに取得できなかったとき、引数を省略して再度呼び出すと、GetPhoneticメソッドは次の候補を返します。候補がないときは、長さ0の文字列("")を返します。
Application.GetPhonetic()
[会社名]テキストボックス(txtKaisha)に入力して次のコントロールに移動したとき、[会社名よみ]テキストボックス(txtYomi)にふりがなの第一候補を自動入力する処理を作成しましょう。
テキストボックスから次のコントロールにフォーカスが移動するとき、テキストボックスにはExitイベントが発生します。ふりがなを取得する処理は、txtKaishaのExitイベントプロシージャに作成します。
これまでの操作と同様、フォームモジュールのオブジェクトボックスから"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)をクリックしたら、次のふりがな候補を取得する処理を作成しましょう。
メッセージボックスに候補を表示して、[はい]ボタンをクリックしたらふりがなを確定し、[いいえ]ボタンをクリックしたら次の候補を表示します。このとき、次のふりがな候補がない場合は、「次の候補はありません」とメッセージボックスに表示します。
表示したふりがな候補を確定するか、次の候補がなくなるか、または[キャンセル]ボタンをクリックするまでこの処理を繰り返します。
設計ウィンドウで、[読み]ボタンをダブルクリックするとcmdYomiのClickイベントプロシージャのひな形が作成されます。ここに、次のコードを記述します。
'[読み]ボタンクリック時の処理
Private Sub cmdYomi_Click()
Dim Ret As Long
Dim strPhonetic As String
'会社名が入力されていない場合にはプロシージャを抜ける
If txtKaisha.Value = "" Then Exit Sub
'ふりがなの第一候補を取得
strPhonetic = Application.GetPhonetic(txtKaisha.Value)
Do
'取得したふりがなの候補で確定するかどうかをメッセージボックスで確認
Ret = MsgBox(strPhonetic & vbCrLf & vbCrLf & _
"確定しますか?", vbYesNoCancel)
If Ret = vbYes Then
'確定の場合には半角文字に変換してテキストボックスに格納
txtYomi.Value = StrConv(strPhonetic, vbNarrow)
ElseIf Ret = vbNo Then
'[いいえ]ボタンを選択した場合は、次のふりがな候補を取得
strPhonetic = Application.GetPhonetic()
'次の候補がなければループをぬける
If strPhonetic = "" Then
MsgBox "次の候補はありません"
Exit Do
End If
End If
'ふりがな候補確定、またはキャンセルの場合は、ループを抜ける
Loop While Ret = vbNo
End Sub
ここまで作成したら、ユーザーフォームを実行してみましょう。
複数の読み方のある会社名を入力し、ふりがなの自動入力を確認しましょう。ここでは、「狩野デザインオフィス」と入力してみます。
「狩野デザインオフィス」のふりがな候補は3つです。そのため、Step8の操作で[いいえ]ボタンをクリックすると、「次の候補はありません」とメッセージボックスに表示されます。
次回からは、住所入力を支援する機能として、郵便番号から住所の一部を取得したり、住所から郵便番号を取得したりする処理を作成していきましょう。