「フリガナ」の欄に、どのように入力してもらうか。
Excelで作られた帳票で頻繁に見かけるのが、このような書式。
この「ヤマダタロウ」の部分について、どのような入力方法が良いか考えてみた。
1.両方とも直接入力
最もよく見かけるパターン。でも、これだと面白くない。
2.フリガナの欄にPhonetic関数をセット
漢字を入力するだけで、フリガナの入力が完了する。
これで済めばよいのだが、昨今は様々な当て字のお名前があるそうで。例えば「苺愛」と書いて「いちあ」さん。残念ながら、そのままでは正しく変換されない。
かといって、「苺」「愛」を個別に入力すると、フリガナが正しく表示されない問題が残ってしまう。
3.ユーザーフォームで入力
ということで、マクロでの解決を試みる。今回はユーザーフォームを用いて、漢字と平仮名の両方を入力する。
まずは、フォームのデザインから。
氏名とフリガナを入力するだけの、シンプルな作りとした。
ユーザーフォーム(NameInputForm)
① 名前を入力するセルを、フォームの初期化時に設定する。
今回は、セル「B2」とした。
Dim NameRange As Range Private Sub UserForm_Initialize() Set NameRange = Range("B2") End Sub
なおフリガナは、ワークシート側のPhonetic関数で表示させるものとする。
② テキストボックスの入力状況を確認する。
Private Property Get CheckBlank() As Boolean Dim Control As Msforms.Control For Each Control In Me.Controls If TypeName(Control) = "TextBox" Then If Control.Object.Value = vbNullString Then CheckBlank = False Exit Property End If End If Next CheckBlank = True End Property
一つでも空のテキストボックスがあれば、Falseを返す。全てのテキストボックスに何某かが入力されている場合のみ、Trueが返る。
③ 入力ボタンの設定。
名前入力用のセルに、名前とフリガナをセットする。なお、ふりがなのセットに関しては、前回作成した「AddPhonetic関数」を使用する。
Private Sub InputCommandButton_Click() If CheckBlank Then NameRange = NameTextBox ' 氏名入力用テキストボックス AddPhonetic NameRange, _ FuriganaTextBox ' フリガナ入力用テキストボックス Unload Me End If End Sub
Sub AddPhonetic(target_range As Range, kana_to_add As String) target_range.Characters.PhoneticCharacters = kana_to_add End Sub
動作確認
それでは早速、「山田苺愛」さんの名前を入力してみよう。
どうやら、上手くいったようだ。
ただしこのままでは、とても使い勝手が悪い。
そこで明日は、その辺りを調整してみるとしよう。
という訳で、明日に続きます。
参考まで。